【vim】正常模式下的一般操作

正常模式一般用于浏览文本,其实也就是通过键盘命令让光标在文本中跳来跳去,在任何模式下按一次或两次<Esc>会进入正常模式。

基本思想

vim对光标的定位操作非常精确和高效,这是它的一个非常好用的地方。但是,由于按键和按键组合太多太复杂,会让好多初学者望而却步。

其实,vim的光标定位是有规律的,就好像当初学五笔打字一样,看起来要记很多字根,其实键盘上字根的排列是非常有规律的,一旦清楚这些规律,学习就会心里有数很多。

vim的光标定位一般需要指定以下几个参数:

  • 移动的范围
  • 移动多少个单位
  • 向前还是向后

通过这几个参数的组合,可以指定非常自由灵活的定位操作。移动的范围,或者说<单位>从小到大包括字符、单词、行、句子、段落、函数、屏幕、页面和文件。

常用定位命令

下面给出不同<单位>对应的基本光标定位指令:

单位 命令 说明
字符 h  左移1个字符
l  右移1个字符(字母l)
f<c>、F<c>  移动到本行下一个字符<c>、上一个字符<c>
t<c>、T<c>  移动到本行下一个字符<c>之前、上一个字符<c>之后
单词 w、W  移动到下一个单词的开头,大写是以空格分隔的单词
b、B  移动到上一个单词的开头,大写同上
e、E  移动到当前单词的末尾,大写同上
*  跳到下一个相同单词
#  跳到上一个相同单词
g*  跳到下一个包含当前单词的单词处
g#  跳到上一个包含当前单词的单词处
j  向下移动1行
k  向上移动1行
0  移动到行首
^  移动到行首第一个非空白字符
$  移动到行尾
<n>|  移动到当前行第n列,比如12|是移动到第12列
<n>G  移动到第n行,比如12G是移动到第12行
+  移动到下一行第一个非空白字符处
-  移动到上一行第一个非空白字符处
 句子   移动到句尾
 移动到句首
段落 }  移动到段尾
{  移动到段首
%  跳转到匹配的括号,如果光标在括号中间,移动到前一括号
函数  }  到下一个空行
{  到上一个空行
]]  到下一个行首的{
[[  到上一个行首的{
][  到下一个行首的}
[]  到上一个行首的}
gd  到当前局部变量的定义处
屏幕  H  移动到屏幕最上面一行
 M   移动到屏幕中间一行
L  移动到屏幕最下面一行
<Ctrl>+e  屏幕向下滚动一行,光标不动
<Ctrl>+y  屏幕向上滚动一行,光标不动
zt  将当前行移动到屏幕顶端
zz  将当前行移动屏幕中间
zb  将当前行移动到屏幕底端
页面  <Ctrl>+f  向下滚动一页
<Ctrl>+b  向上滚动一页
<Ctrl>+d  向下滚动半页
<Ctrl>+u  向上滚动半页
文件  gg  移动文件开头
G  移动文件末尾
<n>%  移动到文件n%处,比如30%是定位到文件30%处

还有:

[+ctrl+i   跳转到函数、变量或宏的定义处
[+ctrl+d  跳转到宏定义处
ctrl+i     跳到下一次光标位置(相当于浏览器的前进)
ctrl+o    跳到上一次光标位置(相当于浏览器的后退)

组合命令示例

上文已经说了,通过灵活地进行定位参数组合,可以实现灵活的光标定位操作,以下是一些示例。

6j 往下移动6行
ge 移动到上一个单词的最后一个字符
3fx 移动到本行下3个字符x
4$ 移动到本行下面第4行的末尾字符
3H 移动到屏幕下面第3行

当加上编辑命令(复制,剪贴等,后面文章介绍)后,组合会更复杂而灵活。

不常用的定位命令

ga   查看光标处字符的ascii码
g8  查看光标处字符的utf-8编码
.  (小数点) 可以重复上一次的命令
<n><Command>  重复某个命令n次

 

【参考】

  1. https://www.ibm.com/developerworks/cn/linux/l-cn-tip-vim/

 

posted @ 2015-07-23 01:21  赵子清  阅读(2200)  评论(0编辑  收藏  举报