vim的使用

做~自己de王妃 提交于 2019-12-26 12:34:03

https://www.cnblogs.com/litterrondo/archive/2013/05/18/3085654.html

1.Vim的三种模式

vi/vim有三种执行模式:命令模式、插入模式和编辑模式。

使用vi/vim打开文件时默认进入命令模式,三种模式之间的切换如上图所示。

2. 插入命令

在命令模式下键入插入命令会进入到插入模式下,插入模式下可以输入文本。

 i: 在光标前插入, I: 在光标所在行的行首插入

 a:在光标后插入, A:在光标所在行行尾插入

 o:在光标所在行上插入新行,O:在光标所在行下插入新行

3. 光标移动命令

在命令模式下键入,改变光标位置

 h:光标左移, j:光标下移, k:光标上移, l:光标右移动

 H:光标定位到屏幕最上面一行, M:光标移动到屏幕中央, L:光标移动到屏幕最下方

 0: 光标移动到行首, $光标移动到行尾

4. 定位命令

在命令模式下键入,定位光标位置

 gg:回到文件首行, G:回到文件尾行

 :n和nG: 光标定位到文件第n行(:20或20G表示光标定位到第20行)

 :set nu 或:set number显示行号, :set nonu 取消显示行号

5. 删除命令

在命令模式下键入,删除文件中的内容

 x : 删除光标所在字符, nx:删除光标后n个字符

 dd:删除光标所在行,ndd:删除光标所在行以后的n行

 D:删除光标到行尾的内容

 dG:删除光标所在行到文件末尾的内容

 :n1,n2d:删除行n1到行n2的内容,包括第n1和n2行都被删除

6. 复制剪切粘贴命令

 yy 或 Y: 复制当前行

 nyy或nY:从当前行开始赋值n行

 剪切使用dd和ndd,相当于删除

 p:在光标所在行之后粘贴

 P:在光标所在行之前粘贴

 

在命令模式下输入v进入visual模式,使用光标选定区域,之后d删除,或者y进行拷贝,再将光标移动到目标位置,p进行粘贴

 

 7. 替换字符命令

 命令模式下键入r,替换当前字符后回到命令模式

 命令模式下键入R,一直替换知道通过<ESC>回到命令模式

 u:取消上一步操作,只要未保存文件,就可以一直取消

 8. 搜索和替换命令

 命令模式下键入:/target, 查找文件中所有的target串,n:下一个target出现的地方(从前往后), N:下一个target出现的地方(从后往前)

 :set ic :搜索忽略大小写

 :%s/old/new/g 将全部old替换为new, 不许确认直接替换

 :n1,n2s/old/new/g 将n1-n2行中出现的所有old替换为new, 不需确认直接替换

 若将上述命令中的g变为c则是需要逐条确认的替换

 9. 退出vi/vim

 :q! 不保存退出

 :wq 或ZZ 保存退出

 :w 保存不退出(保存后,之前的操作不能通过u取消)

 :w filename 当前内容另存为filename

10.函数跳转

详见博客:https://blog.csdn.net/ballack_linux/article/details/71036072

先使用命令:ctags -R .  在当前目录下创建关系目录,之后进入vim;或者ctags -R * 递归当前目录下所有子目录,并建立tag

在函数名所在行:Ctl+]  进入函数定义

之后Ctl+T (记忆:退的拼音tui)回退

  10. 导入文件内容

 :r filename 将filename的文件内容导入到当前编辑文件光标处,如:r /home/test.file 将test.file内容导入

 11. vi命令模式下执行linux命令

  :! shell命令,如:! date将执行date命令

 12. 将shell命令的执行结果导入当前编辑文件

 :r! shell命令,如:r!date,将date命令的执行输出写入到当前编辑文件

 13. 定义快捷键

 :map ^P I#<ESC>(其中^是在命令模式下ctrl+v输入的,表示ctrl键),该快捷键定义表示,当命令模式下键入ctrl + p键时,将在行首插入一个#符并回到命令模式

 :map p I*<ESC>,当该快捷键定义后,命令模式下键入p,则会在行首插入一个*符并返回命令模式

 :map ^B 0x, 该快捷键定以后,命令模式下键入ctrl + b, 会删除行首的字符

 :unmap ^P 取消定义的ctrl+p快捷键

 14. 别名

 :ab test a_very_long_sentense

 定义上述别名后,每次插入test回车后,test都将被替换为a_very_long_sentense

:unab test 取消别名

  15. l连续注释行

  使用命令:n1,n2s/^/#/g 将n1到n2的所有行行首添加字符#

  使用命令:n1,n2s/^#//g将n1到n2之间的所有位于行首的#符去掉

 16. 保存vi/vim设置

 上述的快捷键设置、别名设置,若只是在vi/vim命令模式下设置,将只对本次编辑有效,下次在进入vi/vim,这些设置将不在可用。

 保存vi/vim设置需要修改宿主目录下的文件.vimrc

 root 宿主目录为 /root

 普通用户的宿主目录通常为 /home/username/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!