编辑器之神 Vim 生存指南

读者和目的

本文将在一个简短的篇幅内叙述 Vim 学习的关键点,参考《文本编辑的本质》,从实用主义的角度出发,并不是说需要掌握 Vim 的每个细节,而是会使用 Vim 完成 Linux 下的基本编辑操作。

Vim 是从 vi 发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。

Vim 第一版本由 Bram Moolenaar 在 1991 年发布。最初的简称是 VIMitation,随着功能的不断增加,正式名称改成了 VIMproved。现在是在开放源代码方式下发行的自由软件。

为什么学 Vim

为什么要爬山,因为山在那里。

  • 所有的 Linux 内置 vi 文本编辑器,如果没有联网时,这是唯一选择。
  • 当然你可以使用 nano,但 crontab 命令默认使用 vi,绕不开
  • Vim 带有语法高亮,编程时胜过 vi
  • 跨平台
  • 你还可以找出很多理由,但基本上等于本节第一句话。

是否有替代方案

有。如果仅限于文本编辑,读者完全可以使用非 Linux 平台的,已娴熟掌握的,但带有 sftp 协议的文本编辑器,比如 EverEdit,来替代 Vim,这种选择策略是《选择文本编辑器》提到的零学习成本策略。

Vim 生存指南

概念

学习都从概念开始,基本上 Vim 并不复杂,要学的概念只有一个

  • 模式:
    • 一般模式:这是打开文件就直接进入的模式。你可以移动光标,注意,这个模式不是只读的,你可以删除字符、行、也可以复制、粘贴。
    • 编辑模式:这是按下 i I o O a A r R 8 个字母中的任何一个后进入的模式,这个模式下,你可以 Insert 或 Replace 字符,按下 ESC 可以退回到一般模式。你只要记住 i 即可。
    • 命令行模式:输入 : / ? 三个字符后进入的模式,这个模式主要是文件操作,比如读取、保存、大量替换、退出 vi 等,按下 ESC 会返回一般模式。

安装

一般情况下,这并不值得花笔墨叙述。它和其他软件并没有差别,比如 CentOS 下的安装是:

sudo yum install vim -y

然后,我们可以在一个路径下,运行如下命令开始编辑

[root@localhost ~]# vim imglab.cn.txt

当路径下的文件是存在的,Vim 左下角会显示路径,如果是新文件,则显示:”文件名” [New File]

快捷键

  • 新建::e
  • 打开::enew
  • 保存::w,也可以 :w filename,指定一个文件名
  • 未改文件的退出:在一般模式下按 :q
  • 强制写入文件后退出:在一般模式下按 :qw!
  • 移动:这是 Vim 作者设计的巧妙之处,除了可以使用箭头键和翻页键,还可以键盘上四个连在一起的键:
    • 左:h
    • 下:j
    • 上:k
    • 右:l
    • 下一行非空格首:+,由于 + 是按 S+=,所以比较绕
    • 上一行非空格首:-
    • 下一页:C-f,由于热键重复,Windows 上会弹出查找对话框
    • 上一页:C-b
    • 下半页:C-u
    • 上半页:C-u
    • n 个字符:按 n,再按空格键
    • 行首:数字 0
    • 行尾:$ 类似正则
    • 最后一行:G
    • 跳转到行:n G
    • 下移 n 行:n RET
  • 向下查找:/word
  • 向上查找:?word
  • 查找下一个:n
  • 在 n1 行和 n2 行之间替换::n1,n2s/oldstring/newstring/g,n2 为 $ 时,代表最后一行
  • 向后删一个字符:小写 x,Delete,nx,为删 n 个字符
  • 向前删一个字符:大写 X,Backspace
  • 删一行:dd,ndd,为删 n 行
  • 向后删到行尾:d$
  • 向前删到行首:d0
  • 撤销:u
  • 重做:C-r,与撤销相反,类似 Undo 和 Redo
  • 选择
    • 选择字符:小写 v
    • 选择行:大写 V
  • 剪切:d,可以理解为删除后到了剪贴板
  • 复制:y
  • 在下一行粘贴:小写 p
  • 在上一行粘贴:大写 P
  • 重复上一个操作:. 即重复做
  • 显示行号::set nu
  • 取消行号::set nonu

高级内容

这些快捷键可满足最基本使用,在《EverEdit、Emacs 与 Vim 的常用快捷键对比》中有表格式列举,方便读者记忆。

Vim 可以配置为一个多窗口分割的复杂编程环境,这些留待《Vim 成长指南》中叙述。

发表评论

电子邮件地址不会被公开。 必填项已用*标注