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

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


当前回答

In Insert mode 
<C-A>   - Increments the number under cursor 
<C-X>   - Decrements the number under cursor

如果我们想在vim中生成序列号,这将非常有用假设我们想插入1-10行,数字从1到10[如第1行的“1”,第2行的“2”…]在第一行插入“0”并复制该行和过去的9次因此,所有行都将显示“0”。

运行以下Ex命令

:g/^/exe "norm " . line(".") . "\<C-A>"

其他回答

sudo write的变化:

插入.vimrc

cmap w!! w !sudo tee % >/dev/null

重新加载vim后,您可以将“sudo save”保存为

:w!!
==========================================================
In normal mode
==========================================================
gf ................ open file under cursor in same window --> see :h path
Ctrl-w f .......... open file under cursor in new window
Ctrl-w q .......... close current window
Ctrl-w 6 .......... open alternate file --> see :h #
gi ................ init insert mode in last insertion position
'0 ................ place the cursor where it was when the file was last edited

能够在基于客户端/服务器的模式下运行Vim。

例如,假设您正在处理一个项目,其中有大量缓冲区、选项卡和其他信息保存在名为session.vim的会话文件中。

通过发出以下命令,可以打开会话并创建服务器:

vim --servername SAMPLESERVER -S session.vim

请注意,如果要创建服务器,可以打开常规文本文件,而不一定是会话。

现在,假设您在另一个终端中,需要打开另一个文件。如果您通过以下方式定期打开:

vim new_file.txt

您的文件将在单独的Vim缓冲区中打开,这很难与会话中的文件进行交互。要在服务器上的新选项卡中打开new_file.txt,请使用以下命令:

vim --servername SAMPLESERVER --remote-tab-silent new_file.txt

如果没有服务器正在运行,则将像打开常规文件一样打开此文件。

由于每次您想运行这些标志时都提供这些标志是非常乏味的,因此您可以创建一个单独的别名来创建客户端和服务器。

我在bashrc文件中放置了以下内容:

alias vims='vim --servername SAMPLESERVER'
alias vimc='vim --servername SAMPLESERVER --remote-tab-silent'

您可以在以下位置找到有关此的更多信息:http://vimdoc.sourceforge.net/htmldoc/remote.html

使移动在换行模式下在当前屏幕行上操作的映射。不久前,我在Vim提示的一条评论中发现了这一点,事实证明它非常方便。

function! ScreenMovement(movement)
  if &wrap
    return "g" . a:movement
  else
    return a:movement
  endif
endfunction
onoremap <silent> <expr> j ScreenMovement("j")
onoremap <silent> <expr> k ScreenMovement("k")
onoremap <silent> <expr> 0 ScreenMovement("0")
onoremap <silent> <expr> ^ ScreenMovement("^")
onoremap <silent> <expr> $ ScreenMovement("$")
nnoremap <silent> <expr> j ScreenMovement("j")
nnoremap <silent> <expr> k ScreenMovement("k")
nnoremap <silent> <expr> 0 ScreenMovement("0")
nnoremap <silent> <expr> ^ ScreenMovement("^")
nnoremap <silent> <expr> $ ScreenMovement("$")

:设置本地自动读取

自动重新加载当前缓冲区。。在查看日志文件时特别有用,它几乎可以从vim中为unix中的“tail”程序提供功能。

从vim中检查编译错误。根据perl语言设置makeprg变量

:setlocal makeprg=perl\-c\%

对于PHP

设置makeprg=php\-l\%设置错误格式=%m\\%f\\line\%l

发出“:make”将运行相关的makeprg,并在快速修复窗口中显示编译错误/警告,并可以轻松导航到相应的行号。