vim 使用笔记

2019-10-13 笔记本

所有的 类·Unix 系统(如 Mac)都会自带一个 vi 编辑器,vim 就是很著名的一款


(图片来源网络)

如果你的系统没有预装,你可以使用一下命令手动安装(需要 root 权限):

CentOS: sudo yum install vim

Debian/Ubuntu: sudo apt-get install vim

Vim 的使用#

命令行输入 vim {file} 进入 Vim 。

Vim 主要有三种工作模式:

  1. 命令模式 (Command Mode)

    刚刚启动/进入 Vim ,就进入了这种模式。此时,我们键盘的动作不再被认为是输入,而是命令。如以下常见命令:

    • i / a / o : 进入输入模式
    • : : 进入底线命令模式
    • / : 搜索,替换功能 (后面会重点讲)
  2. 输入模式 (Insert Mode)

    如果进入输入模式,通常下面会有-insert- 或者 -replace- 字样,就能正常的进行文本编辑。这是如果要退出输入模式,则须按 ESC 退出。

  3. 底线命令模式 (Last Line Mode)

    进入底线命令模式就可以进行文件保存等类似操作,具体看命令 (省略了进入的那个:):

    • w : 将编辑的数据写入,相当于保存
    • w! : 强写,对一些只读或者权限不够修改时强行写入,具体看权限
    • q : 退出,即离开 vim
    • q! : 强行退出,强制离开不保存
    • wq : 储存后离开
    • w {file} : 写入至另一个文件,相当于另设为

Vim 复制 & 粘贴 & 删除#

(在命令模式中)

光标快速定位#

讲上述之前,先贴上几个光标快速移动的命令:

  1. 0 : 移动到行首
  2. $ : 移动到行尾
  3. G : 移动到文本末尾
  4. 1G : 移动到文本最上方
  5. {n}<enter> : 光标向下 {n} 行
  6. {n}<space> : 光标向右 {n} 个位置

复制#

Vim 里复制的命令是 y

可以点击 y 后配合上述光标移动命令快速复制一段内容,如 y0 为从当前复制到行首,等等。

另外还有比较常用的如,yy 复制当前行,{n}yy 复制光标后及其向下的 {n} 行,等。

粘贴#

Vim 里粘贴到命令是 p ,直接输入 p 默认粘贴到下一行。

比如我现在已经复制了 10 行的文本,我在第 30 行输入 p ,则粘贴的文本追加到从 31 行到 40 行的地方,且后面的内容全部向下移动 10 行。

如果改为大写字母 P ,意思是粘贴到当前行,且后面的内容(包括当前行)全部向下移动响应位置。

删除#

其实 Vim 里并没有严格意义上的删除操作,所有的删除其实都是剪贴

删除的命令为 d ,使用方法与复制 y 类似,不在赘述。删除后,后面的内容会跟进。

⚠️注意:Vim 所有复制、删除(剪贴)操作都会直接将 Vim 剪贴板覆盖。比如你复制了一段文字,在粘贴它之前有删除了一些内容,那当你粘贴的时候就会得到刚刚删除的文字。且 Vim 剪贴板与系统剪贴板是互相隔离的。

撤销 & 重做#

如果不小心失误了,可以输入 <Ctrl> + r 撤销。

撤销过头也可输入 u 来重做。

. 则是重复执行上一个操作。

Vim 查找与替换#

如果大家学会了上面的命令,那么可以学习下 查找替换 这两个操作,在处理很大篇幅的文本时效率激增!

查找#

在命令模式下输入 / 便进入查找模式,接着输入要查找的字段即可。

如查找 config 只需输入 /config

此时如果还在命令模式:

  • 输入小写的 n 查找下一个,大写的 N 查找上一个。

  • 输入 Ctrl + i 查找第 i 个。

切换到输入模式再换回来也不影响。

Vim 支持正则表达式,也可以用反斜线转义。

输入 * 则是查找光标所在单词,若当前为 config ,那么 config link 中的 config 可以被匹配到而 _configconfiging 却不行。

大小写敏感#

默认不敏感,\c 是不敏感,\C 是敏感。

如:

/config\C

替换#

格式:

:{范围}s/{原文本}/{替换为}/{模式}

范围:#

  1. 不输入,默认当前行,如:

    :s/config/_config/g 就是当前行的 config 替换为 _config

  2. % : 全文

  3. l,r :第 l 行到第 r 行。

  4. .,+ns : 当前行到接下来 n 行

模式#

  1. 不输入,默认替换光标后的第一个
  2. g : 全部替换
  3. i : 大小写不敏感 (默认)
  4. I : 大小写敏感
  5. c : 替换前确认

此处命令可以叠加,如:

:%s/config/_config/gIc

本文作者:ChrAlpha

本文链接: https://blog.ichr.me/post/how-to-make-good-use-of-vim/

文章默认采用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。

笔记本

评论

您所在的地区可能无法访问 Disqus 评论系统,请切换网络环境再尝试。