最近发现高手非常熟练使用vi,改代码效率他妈的高。而自己玩linux那么久,对vi就只会使用那几个简单的命令深感惭愧,特做次记录(暂时有点乱):
常用功能:
1. 在VI的命令模式下输入“:set nu”,就有行号了。
2. 跳转到某行:在命令模式下冒号加行号就可以了;输入0跳转到首行,$跳转到行尾
3. dd删除当前行;d10表示删除光标后的10行 dw删除光标所在的单词。x删除光标所在的字符。
4.u恢复上一次的修改。
复制与粘贴操作
yy复制当前行整行的内容到vi缓冲区
yw复制当前光标到单词尾字符的内容到vi缓冲区
y$复制当前光标到行尾的内容到vi缓冲区
y^复制当前光标到行首的内容到vi缓冲区
p读取vi缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)
字符串查找操作
命令功能
/word从上而下在文件中查找字符串“word”
?word 从下而上在文件中查找字符串“word”
输入n,再按enter,定位下一个匹配的被查找字符串
替换功能:
#command mode下输入":1,$s/source/test/g".
#意思是把文档从第一行开始到最后一行为止的source字符串取代为test
#1,$可以用%取代:从第1行到$(结束)行;".,.+7":从当前行至其后7行,+换-表示向前搜索。
#s:sed的缩写。
#/g表示一行如果有多个关键字时同时取代。
块操作:
用v进入visual模式,d是删除命令(和命令模式一样)。
d之后用p可以粘贴,p粘贴在光标后,P在光标前。
注意用x或dd删除掉的东西也是要放在剪贴板里的,会覆盖当前剪贴板的内容。
先按v,然后通过上下左右选中一块区域,按x删除,这样再通过p就可以粘贴了
列操作: