Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22505
  • 博文数量: 5
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 52
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-18 14:48
文章分类

全部博文(5)

文章存档

2015年(5)

我的朋友

分类: LINUX

2015-08-11 15:02:12

一直用vi,用了好几年了。觉得自己是vi的高手了。忽然一天,见另外一同事在我电脑上操作文件,这才发现,原来我什么也不过。
于是度娘+google了好多文章,更加汗颜了。我这是连起步都算不上啊。于是觉得重新学习vim,并向大大们学习,把自己的学习笔记记录下来,一来自己翻阅方便,二来也希望能让一些朋友能看到,少走一些弯路。更欢迎能有高手帮忙补充。

第一章就写点简单的光标移动。很多身边的同事还在用方向键等操作vi,效率可想而知。其实在命令模式下的快键键多到发指:

1、    按屏幕移动
Ctrl +f    ##--下翻一页,(f)orward (英文是自己猜的,方便记忆)
Ctrl +b   ##--上翻一页,(b)ack
Ctrl +d   ##--下翻半页,(d)own
Ctrl +u   ##--上翻,(u)p

Ctrl+e   ##--上移一行,光标不动

Ctrl+y   ##--下移一行,光标不动
z + 回车         // 把当前行移动到屏幕顶部
100z + 回车      // 将移动第100行到屏幕的顶部,记得键入100z之后要再回车


2、    按搜索移动
事实上,对于一个源程序文件我们往往是要查找其中的一个变量或函数名,最有效的方法就是按文本搜索快速移动。
/pattern            // 向前搜索模式,pattern代指要搜索的内容
?pattern            // 向后搜索模式
n                              // 重复上次搜索(向行号大的方向)
N                             // 反方向重复上次搜索


3、    按行号移动
nG (or :n)                        // 移动到第n行,注意此处G是大写。即输入n,在小写模式下输入shift+g,大写模式下直接按下g键
Ctrl + g            // 显示当前行信息(并不是移动命令)
G    // 移动到文件的尾部
gg   // 移动到文件的头部

4、按光标移动

左:h
下:j
上:k
右:l

下一行行首:+         //shift键切换到上档 '+'
上一行行首:-
当前行行首:0

把光标移至当前行的起始位置,也即当前行的第一个非空白字符:^
当前行行尾:$

后一个单词词首:w,W    // w:将光标右移一个字。光标停留在下一个字的字首位置;W:将光标右移一个字。光标停留在下一个字的字首位置(即使两个字之间存在标点符号)。
后一个单词词尾:e,E      // e:把光标移至当前所在字(或下一个字)的最后一个字符位置;E:  同e,只是以空格字符作为字的分隔符。

前一个单词词首:b,B //b:将光标左移一个字。光标停留在下一个字的字首位置;B:将光标左移一个字。光标停留在下一个字的字首位置(即使两个字之间存在标点符号)。

当前屏幕首行:H
当前屏幕末行:L
当前屏幕中央:M

fx       //往右移动到 x 字符上                                                        
Fx       //往左移动到 x 字符上                                                        
tx       //往右移动到 x 字符前                                                        
Tx      //往左移动到 x 字符后                                                        
         (注意:以上四个命令中,其中x是键入的字符)                                  
;         //分号,配合 f 和 t 使用,重复一次                                       
,         //逗号,配合 f 和 t 使用,反方向重复一次  

标记文本替换

mqq    //用字符串qq来标记当前光标的位置

`qq      //移至qq所标记处  (数字1键左边键的上档)

'qq      //移至qq标记所在行的开头处(单引号)

''         //移至当前行上第一次所在位置的行的开头处(在光标移动之后,两个单引号)

"          //移至当前行上一次所在位置(在光标移动之后)——1个双引号(测试不通过)

这一部分内容很多,需要大量练习习惯后你会发现vi的速度会快好几倍。而且光标的移动式基础,后面复制,删除,替换等等系列的操作都多少会和他有所关联。

阅读(1120) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~