人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。

然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。


当前回答

:! [command]在Vim中执行外部命令。

但是在冒号后面加一个点:。![command],它会将命令的输出转储到当前窗口中。那就是:!

例如:

:.! ls

我经常使用此功能,例如将当前日期添加到我正在键入的文档中:

:.! date

其他回答

这些是我多年来收集的。

" Pasting in normal mode should append to the right of cursor
nmap <C-V>      a<C-V><ESC>
" Saving
imap <C-S>      <C-o>:up<CR>
nmap <C-S>      :up<CR>
" Insert mode control delete
imap <C-Backspace> <C-W>
imap <C-Delete> <C-O>dw
nmap    <Leader>o       o<ESC>k
nmap    <Leader>O       O<ESC>j
" tired of my typo
nmap :W     :w

我什么都用Vim。编辑电子邮件时,我使用:

gqap(或gwap)

即使使用引号引导字符,也可以在逐段基础上轻松正确地重新格式化。为了实现此功能,我还添加了:

-c’集合fo=tcrq’-c’集合tw=76’

到外部调用编辑器的命令。一个值得注意的添加是将“a”添加到fo(formatoptions)参数中。这将在您键入和浏览内容时自动重新格式化段落,但可能会干扰或导致消息中错误或奇怪格式的问题。

当我在项目中工作时,我经常使用许多窗口,有时我需要调整它们的大小。以下是我使用的:

map + <C-W>+
map - <C-W>-

这些映射允许增加和减少当前窗口的大小。这很简单,但很快。

:%!xxd

将vim制作成十六进制编辑器。

:%!xxd -r

还原

警告:如果不使用二进制(-b)进行编辑,可能会损坏文件。–Josh Lee在评论中写道。

这里有些不明显的地方。如果你的$HOME中有很多自定义插件/扩展,你需要从su/sudo/。。。有时,这可能是有用的。

在~/.bashrc中:

export VIMINIT=“:so$HOME/.vimrc”

在~/.vimrc中:

如果$HOME=='/root'如果$USER=='root'如果是目录('/home/your_typeualusername')let rtuser='your_typeal_user'elseif是目录('/home/your_other_username')let rtuser='your_other_username'结束符其他的let rtuser=$USER结束符让&runtimepath=替换(&runtimepath,$HOME,'/HOME/'.rutter,'g')结束符

它将允许您的本地插件加载-无论您使用何种方式更改用户。

您可能还想将*.swp文件从当前路径中取出,并放入~/vimtmp(这将放入.vimrc中):

如果isdirectory(展开('~/vimtmp'))调用mkdir(展开('~/vimtmp'))结束符如果是目录(展开('~/vimtmp'))设置目录=~/vimtmp其他的设置目录=/var/tmp、/tmp结束符

此外,我使用一些映射来简化编辑-使ctrl+s可以像escape和ctrl+h/l那样切换选项卡:

inoremap<C-s><ESC>vnoremap<C-s><ESC>noremap<C-l>gtnoremap<C-h>gT