本节介绍Linux系统中非常重要的vim文本编辑器的使用。

vim 是 “vimsual interface IMproved”的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。

vim 不是一个排版程序,它不像MS Word 或 WPS 那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。

vim 是全屏幕文本编辑器,它没有菜单,只有命令。

  1. 1)命令行模式
  2. 2)输入模式、编辑模式
  3. 3)末行模式
  4. 4)替换模式

1、命令行模式

  1. 存盘 ZZ 保存退出
  2. 光标移动:
  3. 移动光标 h j k l
  4. 光标移到本行开头home
  5. 移到本行末尾 end
  6. 光标移到末尾 G
  7. 光标移到开头gg
  8. 光标移动一个单词w
  9. 粘贴复制:
  10. 复制一行 yy 复制 n nyy
  11. 粘贴 p
  12. 删除:
  13. 删除字符 x 向后删除 X 向前删除
  14. 删除一行 dd ndd
  15. 删除一个单词 dw
  16. 撤销:
  17. 撤销操作 u 向上一步 . 重复上一次操作
  18. 查找:
  19. 查找/string define \ 转义字符 查找“/bin/bash /\/bin\/bash
  20. 删除与修改
  21. “编辑”是指文字的添加、修改以及删除,甚至包括文字区块的移动、复制等。
  22. vim 中一般认为输入与编辑是两个概念。
  23. 编辑是在命令模式下进行的,先利用命令移动光标来定位到要进行编辑的地方,然后再使用相应的命令进行编辑;而输入是在插入模式下进行的。
  24. 在命令模式下常用的编辑命令:
  25. x 删除光标所在字符。
  26. dd 删除光标所在的行。
  27. r 修改光标所在字符,r 后是要修正的字符。
  28. R 进入替换状态,输入的文本会覆盖原先的资料。
  29. s 删除光标所在字符,并进入输入模式。
  30. S 删除光标所在的行,并进入输入模式。
  31. cc 修改整行文字。
  32. u 撤消上一次操作。
  33. . 重复上一次操作。

2、编辑模式

  1. 输入模式
  2. 在输入模式下,屏幕的左下方会出现INSERT 字样。
  3. 在输入状态下,用户可以输入文本的内容
  4. 在插入模式下也可以删除字符,而标准的vim 编辑器在编辑状态下不能删除字符,只能插入字符
  5. 如何从命令行模式进入输入模式
  6. a 从光标所在位置后面开始输入资料,光标后的资料随增加的资料向后移动。
  7. A 从光标所在行最后面的位置开始输入资料。
  8. 插入(insert
  9. i 从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。
  10. I 从光标所在行的第一个非空白字符前面开始插入资料。
  11. 开始(open
  12. o 在光标所在行下新增一行并进入输入模式。
  13. O 在光标所在行上方新增一行并进入输入模式。
  14. 如何退出输入模式
  15. esc

3、末行模式

  1. 末行模式
  2. 只要在命令模式下输入命令“:”即可进入末行模式。
  3. 在末行模式下,可以进行保存文件、退出vim、进行查找和替换等操作。
  4. :
  5. 当同时编辑多个文件时 因为同一时间只能显示一个文件,所以在VI中切换打开的文件可以使用Nn来切换打开的文件
  6. :n 切换下一个文件
  7. :N 切换上一个文件
  8. :q 退出
  9. :q! 强制退出不保存
  10. :w
  11. :wq
  12. 替换
  13. :s/old/new 只替换光标所在行的第一个old string
  14. :s/old/new/g 将本行(光标)的所有old string替换为new string g global n代表一个行号
  15. :%s/old/new/g 将本文中所有的old string替换为new string
  16. :1,2s/old/new/g 替换12行中的old stringnew string
  17. :.,2s/old/new/g .代表光标所在行 当前行到第二行的
  18. :2,$s/old/new/g 替换2到最后一行中的old stringnew string
  19. :set nu 显示行号
  20. :set nonu
  21. :!command vim编辑器中执行一条命令(不许要退出当前的编辑,可以在编辑器中执行命令,类似退出编辑器执行命令)
  22. 查找
  23. /string 将光标定位到string 所在的行。
  24. ?string 将光标移动到最近的一个包含 string 字符串的行
  25. :n 把光标定位到文件的第n 行。
  26. 保存文档
  27. 可以用:nmw filename 命令将第n 行到第m 行的文字存放的所指定的filename 文件中。

4、替换模式

  1. 命令行下按R键进入替换模式
  2. 退出
  3. esc

相关配置文件:

  1. ~/.viminfo vim历史编辑文档
  2. ~/.vimrc vim个性设置文档

自定义文件头注释~/.vimrc

  1. autocmd BufNewFile *.py,*.sh,*.c exec ":call SetTitle()"
  2. func SetTitle()
  3. if &filetype == \'python\'
  4. call setline(1,"\#!/usr/bin/env python")
  5. call append(line("."),"\#enconding=utf-8")
  6. call append(line(".")+1, "\#Author: Bai Shuming")
  7. call append(line(".")+2, "\#Created Time: ".strftime("%Y/%m/%d %H:%M"))
  8. call append(line(".")+3, "")
  9. elseif &filetype == \'sh\'
  10. call setline(1,"\#!/usr/bin/env bash")
  11. call append(line("."),"\#enconding=utf-8")
  12. call append(line(".")+1, "\#Author: Bai Shuming")
  13. call append(line(".")+2, "\#Created Time: ".strftime("%Y/%m/%d %H:%M"))
  14. call append(line(".")+3, "")
  15. elseif &filetype == \'c\'
  16. call setline(1,"#include ")
  17. call append(line("."), "")
  18. endif
  19. endfunc

版权声明:本文为Kwan-C原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Kwan-C/p/11614492.html