some helpful vim command

viewpoint 移动

shift + H     屏幕第一行
shift + M     屏幕中间
shift + L     屏幕最末行

zz     移动当前行到屏幕中央 
zt     移动当前行到屏幕顶部 
zb     移动当前行到屏幕底部

在当前行高效移动光标

fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。 
tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用) 
Fx:和 fx 类似,不过是往回找。 
w:光标往前移动一个词。 
b:光标往后移动一个词。 
0:移动光标到当前行首。 
^:移动光标到当前行的第一个字母位置。 
$:移动光标到行尾。

书签

ma:在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。 
`a:到书签 a 处。注意这个不是单引号,它位于键盘的 1 的左边。 
`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它

缓冲区 buffer

ls: 列出当前缓冲区的文件信息,包含上次编辑的行。

// ls的输出  
    1 %a   "source/_posts/2012-06-22-some-helpful-vim-command.markdown" line 48  
    2      "CHANGELOG.markdown"           line 0  
    4      "Gemfile.lock"                 line 0

// 其它缓冲区相关命令
[N]b[N]:    其它相关命令选择buffer list中的第一个文件,N是序号可以写在前边,也可以写在后边
[N]bn[N]:   选择buffer list中当前文件之后(next)的第N个文件
[N]bp[N]:   选择buffer list中当前文件之前(previous)的第N个文件
bf:         选择buffer list中的第1(first)个文件
bl:         选择buffer list中的最后(last)一个文件

more

    >nj n 为行数 (>表示缩进,nj表示向下移动n行) 
    %=  把光标放在第一个大括号{上, 然后按%=使vim自动缩进 
    [p  匹配当前行缩进的复制,复制到该行上面
    ]p  匹配当前行缩进的复制,复制到该行下面
    gu  将字符变成小写
    gU  将字符变成大写

获取当前文件全路径

// 全路径
// /Users/zhiyelee/demo/2012-06-22-some-helpful-vim-command.markdown
:echo expand('%:p')  

// 相对于工作目录的路径
// 2012-06-22-some-helpful-vim-command.markdown
:echo expand('%:p')

其中

  • %是当前文件,:p选项表示要显示全路径
  • 当不适用:p选项时,:echo expand('%')显示的路径信息与ctr+g, :file显示的路径信息想同,均是相对于当前工作目录的路径

更详细用法查看:h expand

comments powered by Disqus