Vim 编辑器

「Linux」Vim Editor

Posted by Hex on October 19, 2020

Vim 是一个功能强大的全屏幕文本编辑器,是 Linux/Unix 上最常用的文本编辑器,它的作用是建立,编辑,显示文本文件。

Vim 没有菜单,只有命令,

Vim 工作模式

Vim 的工作模式共有3种,命令模式,编辑模式,末行模式。

  • 命令模式:在 shell 中使用 vim filename 命令进入到 vim 的编辑模式,filename 可以是已经存在的文件,也可以是不存在的文件(此时系统会自动创建文件)。

    在进入命令模式后,键盘输入的每一个字符,vim 都会将其当做一个命令执行。

  • 编辑模式:在命令模式下,使用 i 、a、o 键进入到编辑模式,在编辑模式中所做的修改不会被保存,必须在末行模式下输入保存命令进行保存。

  • 末行模式:在命令模式下,输入 : 进入到末行模式,在末行模式下可以对修改的文件内容进行保存、保存退出、或者直接退出 Vim。

Vim 命令模式

插入命令

用来移动光标并进入到编辑模式。

  • a:在光标所在字符后插入。
  • A:在光标所在行尾插入。
  • i:在光标所在字符前插入。
  • I:在光标所在行首插入。
  • o:在光标下插入新行。
  • O:在光标上插入新行。
  • cw/cW

定位命令

用来移动光标到指定位置。

  • gg:移动到第一行。

  • G:移动到最后一行。

  • nG:移动到第 n 行。

    在末行模式下可以通过 :set nu 显示行号。

  • $:移动到行尾。

  • 0:移动到行首。

  • %:移动到当前括号的另一半(需要先将光标移动到括号上)。

  • *:移动到下一个匹配单词。

  • #:移动到上一个匹配单词。

  • fs:移动到当前行的下一个 s 字母处(也可以是其他字母)。

  • Fs:移动到当前行的上一个 s 字母处(也可以是其他字母)。

  • w/W:到下一个单词的开头。

  • e/E:到下一个单词的结尾。

w/e 小写时,单词以字母、数字、下划线组成。W/E 时,单词以非空格的字符组成。

删除命令

用来删除文件内容。

  • x:删除(剪切)光标所在的字符。
  • nx:删除(剪切)光标所在处的后 n 个字符。
  • dd:删除(剪切)光标所在行。
  • ndd:删除(剪切)光标所在行后的 n 行。
  • dG:删除光标所在行至行尾的内容。
  • D:删除光标所在处到行尾的内容。

复制和剪切命令

用来复制和剪切文本内容。

  • yy:复制光标所在行。
  • nyy:复制光标所在行后的 n 行。
  • x:剪切(删除)光标所在的字符。
  • nx:剪切(删除)光标所在处的后 n 个字符。
  • dd:剪切(删除)光标所在行。
  • ndd:剪切(删除)光标所在行后的 n 行。
  • p:当剪切板是使用 x、nx 剪切的内容时,将内容粘贴到光标后的位置;当剪切板是使用 d、nd 剪切的内容时,将内容粘贴到光标所在行的下一行。
  • P:当剪切板是使用 x、nx 剪切的内容时,将内容粘贴到光标前的位置;当剪切板是使用 d、nd 剪切的内容时,将内容粘贴到光标所在行的上一行。

其他命令

  • r:替换光标所在处的字符。
  • R:从光标所在处开始替换字符,按 Esc 结束。
  • u:取消上一步操作。
  • ctrl + r:重做,将取消的上一步操作恢复。

  • /str:查找字符串 str。

  • n:在查找状态下,跳转到下一个匹配的字符串。

    可以在末行模式下输入 :set ic 忽略大小写,此时查找会忽略大小写匹配。

    取消忽略大小::set noic

  • ZZ:退出到命令行。

Vim 末行模式

常用命令:

  • :set nu:显示文件行号。
  • :set nonu:取消文件行号显示。
  • :set ic:(查找时)忽略大小写。
  • :set noic:(查找时)取消忽略大小写。
  • :n:跳转到第 n 行。
  • :m,nd:删除第 m 行至第 n 行的内容。
  • :range/old/new/options:查找并替换字符串。
    • range:范围,%s 全文替换,m,ns 替换 m - n 行的内容。
    • old:原字符串。
    • new:新字符串。
    • options:g - 不询问,c - 替换前进行询问。
  • :w:保存修改。
  • :w new_filename:另存为 new_filename 文件。
  • :wq:保存并退出。

  • :q:直接退出(不保存),如果存在未保存的修改,需要添加 !。

Vim 高级技巧

向文件导入内容:

  • :r /path/file:将外部文件的内容导入到光标所在的位置后。
  • :!command:不退出 Vim 的情况下执行命令。

小技巧::r !command,将命令的执行结果直接导入到文件中。

^ 符号的使用:在 vim 中,^ 用来指代行首的位置。

使用示例:

  • :m,ns/^/#/g:注释 m - n 行的内容。
  • :m,ns/^#//g:取消注释 m - n 行的内容(^# 表示只匹配行首的 #)。

命令的重复:

  • .:小数点,重复上一次的命令。
  • nxx:执行 xx 命令 n 次。

2dd - 连续删除 2 行;3p - 连续粘贴 3 次;10istar - 连续写下 10 个 star;

储存常用短语:

  • :ab original target:将 target 储存到 original 关键字中,在编辑模式下输入 original 时会自动替换为 target。

    :ab mymail tiny.star@qq.com:每次输入 mymail 时都会被替换为邮箱地址。

如果想要永久储存短语,需要修改用户家目录下的 .vimrc 文件。