vim手摸手入门教学

358 阅读4分钟

vim打开文件的姿势

vim 打开文件有四种方式,每种方式都有不同惊喜。

  • vim 文件路径,比如 vim test.sh,这种打开姿势其实没什么惊喜 ^_^|||
  • vim +数字 文件路径,比如 vim +5 test.sh,这种情况下,光标会自动定位到对应的行数,+5相当于光标定位到第五行。
  • vim +/关键词 文件路径,比如 vim +/last test.sh,会自动高亮对应的关键词,+/last相当于高亮last,如下图
  • vim 文件路径1 文件路径2 ... 文件路径n,一次性打开多个文件,很少这么使用 (°ー°〃)

vim的三种模式

vim有三种模式,命令模式,编辑模式,末行模式。打开文件的时候,默认是进入命令模式。先来看看三种模式之间的转化,下面这张图展示了三种模式之间的关系。

由此可见,末行模式和编辑模式之间是不能转化的,必须通过命令模式进入。

命令模式

命令模式是打开文件之后进入的默认模式,在该模式下,不能编辑文本,可通过快捷键进行一些特定的操作,来看一下该模式下的常用操作

  • 光标移动
    • 移动到行首shift + 6,即 ^ 符,和正则的以什么开头的符号一样
    • 移动到行尾shift + 4,即 $ 符,和正则的以什么结尾的符号一样
    • 移动到首行gg,快速按下两次g (good game)
    • 移动到末行G,即大写的G
    • 翻屏
      • 向上翻屏 ctrl + b,b是before的意思
      • 向下翻屏 ctrl + f,f是after的意思
    • 移动到指定行数 数字 + G
    • 向上/下移动n行 数字 + 方向上/方向下
    • 向左/右移动n个字符 数字 + 方向左/方向右
  • 复制
    • 复制光标所在行yy,快速按下两次y
    • 以光标所在行为准,向下复制指定n行(包括当前行)数字 + yy
    • 可视化块状复制ctrl + v,选中之后yy
  • 剪切/删除
    • 剪切/删除光标所在行dd,快速按下两次d
    • 以光标所在行为准,向下剪切/删除指定n行(包括当前行)数字 + dd
    • 剪切/删除光标所在行,但是行数不上移动D,即大写的D
  • 粘贴
    • p,paste的意思,在下一行粘贴
  • 撤销/恢复
    • 撤销u,undo的意思
    • 恢复ctrl + r,restore的意思

编辑模式

在该模式下,编辑文本内容,进入的方式有多种,在命令模式下:

  • 按下 i,输入的字符将在光标所在字符前写入,即insert
  • 按下 a,输入的字符将在光标所在字符后写入,即after
  • 按下 o(字母小写o),在光标所在行下一行开始写入
  • 按下 O(字母大写O),在光标所在行上一行开始写入
  • 按下 I(字母大写I),在当前行行首开始写入
  • 按下 A(字母大写A),在当前行行尾开始写入
  • 回到命令模式,按一下Esc

末行模式

在该模式下,在末行输入对应的命令,之后按回车,即可进行对应的操作。 进入方式,在命令模式下,按下:(英文的冒号),即可进入末行模式。

  • 退出相关
    • 退出 :q,即quit
    • 强制退出,也是不保存 :q!
    • 保存并退出 :wq
    • 另存为,:w 另存为路径,比如 :w /tmp/2.txt
    • :x 会自动判断,如果文件没有修改则是:q的行为(文件的修改日期没有改变),如果文件有修改则是:wq的行为(文件的修改日期发生改变)
  • 取消高亮 :nohl
  • 搜索,在命令模式下,按下/,之后输入关键词,按下回车进行搜索,按下N查找上一个,按下n查找下一个
  • 替换
    • :s/搜索关键词/新的内容,只替换光标所在行的第一处匹配处,比如 :s/2/1,在光标所在行,把第一个2替换成1
    • :s/搜索关键词/新的内容/g,将光标所在行所有匹配处进行替换,比如:s/2/1/g,在光标所在行,把所有的2替换成1
    • :%s/搜索关键词/新的内容,替换所有行中,第一处匹配处,比如:%s/2/1,在所有行中,把第一个2替换成1
    • :%s/搜索关键词/新的内容/g 替换所有匹配处,比如:%s/2/1/g,将文档中的所有2替换成1

配置文件

vim的配置文件分为全局配置和个人配置,全局配置文件位于/etc/vimrc,个人配置文件位于~/.vimrc,个人配置文件如果不存在,可以直接新建一个。个人配置的优先级高于全局配置。vim的配置中,默认有代码着色,但是没有显示行号,因此可以在配置文件中配置,即在配置文件中添加set nu,即可在vim中显示行号。

vim还有很多的配置项,有兴趣的话,可以直接上官网查看。

总结

vim还有很多快捷键和用法,这里只是做了一些入门的介绍,和比较常用的快捷键介绍。

Thanks!