介绍

vi编辑器是Unix系统最初的编辑器。它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。

尽管它可能是世界上最复杂的编辑器(至少讨厌它的人是这么认为的),但其拥有的大量特性使其成为Unix系统管理员多年来的支柱性工具。

在GNU项目将vi编辑器移植到开源世界时,他们决定对其作一些改进。由于它不再是以前Unix中的那个原始的vi编辑器了,开发人员也就将他重命名为vi improved, 或vim。

vim打开文件功能更多一些,特别是对于shell脚本这种文本,会有不同字符的高亮显示。

Vim编辑器是在内存缓冲区中处理数据。

 

vim基本使用

在终端键入vim命令和要编辑的文件的名字就可以启动vim编辑器(如在启动vim时未指定文件名,或是这个文件不存在,vim会开辟一段新的缓冲区域来编辑)。
vim编辑器有两种操作模式:

  • 普通模式
  • 插入模式

刚启动vim编辑器,默认进入普通模式,在这个模式下,vim编辑器会将按键解释成命令(这也是vim特殊的地方,很多没有使用过vim的人刚开始打开vim时会被这个模式吓倒,毕竟在键盘上按键但一点反应都没有的编辑器实在是少见)。

在普通模式下键入i 可进入插入模式(insert。事实上,键入a或者s也可进入插入模式),在插入模式下,vim会将你在光标位置输入的每个键都插入到缓冲区(也就是直接输入到文本中,并在屏幕上打印出来)。

要退出插入模式返回普通模式话,就要键入退出键(ESC键,也就是Escape键)。

在普通模式下,若是vim能正确识别你的终端类型(正常情况下应该都可以的),就可以直接使用方向键在文本区域移动光标。

vim也有独有的用来移动光标的命令。

  • h:左移一个字符
  •  j :下移一个字符
  • k:上移一个字符
  • l :右移一个字符
  • PageDown(或Ctrl+F):下翻一屏
  • PageUp(或Ctrl+B):上翻一屏
  • G:移到缓冲区最后一行
  • num G:移到缓冲区第num行
  • gg:移到缓冲区第一行

vim编辑器在普通模式下可按冒号键:进入命令行模式,可以输入额外的命令来控制vim的行为。

  • q:如果未修改缓冲区数据,退出
  • q!:取消所有对缓冲区数据的修改并退出
  • w filename:将文件保存到另一个文件中
  • wq:将缓冲区数据保存到文件中并退出



在普通模式下编辑数据

  • x:删除当前光标所在位置的字符
  • dd:删除当前光标所在行
  • dw:删除当前光标所在位置的单词
  • d$:删除当前光标所在位置至行尾的内容
  • J:删除当前光标所在行行尾的换行符(拼接行)
  • u:撤销前一编辑命令
  • a:在当前光标后追加数据
  • A:在当前光标所在行行尾追加数据
  • r char:用char替换当前光标所在位置的单个字符
  • R text:用text覆盖当前光标所在位置的数据,直到按下ESC键

有些编辑命令允许使用数字修饰符来指定重复该命令多少次,如:命令2x会删除从光标当前位置开始的两个字符,命令5dd会删除从光标当前所在行开始的5行。

另外,vim编辑器在普通模式下通常会把删除键(Delete键)识别成x命令的功能,通常不识别退格键(Backspace键)。

 

复制和粘贴

vim编辑器在删除数据时,实际上会将数据保存在单独的一个寄存器中,可以用p命令取回。

例如,可以用dd命令删除一行文本,然后把光标移动到缓冲区的某个要放置该文本的地方,然后用p命令,该命令会将文本插入到当前光标所在行之后。

vim编辑器中复制命令是y(代表yank),可以在y命令后面使用和d命令相同的第二字符(如:yw代表复制一个单词,y$代表复制到行尾)。

在复制文本后,把光标移动到想放置文本的地方,键入p命令,复制的文本就会出现在该位置。

复制命令一般在可视模式下使用。可视模式会在移动光标的同时高亮显示文本,键入v键可进入可视模式。

可先在可视模式下覆盖要复制的文本,然后键入y命令来激活复制命令,之后移动光标到要放置文本的位置,使用p命令将寄存器中的文本粘贴下来。

 

查找和替换

vim编辑器在普通模式下,可使用/(斜线)来查找文本。按下/后,光标会跑到消息行,然后vim会显示出斜线。输入要查找的文本,按下回车键便可完成查找。vim编辑器会采用以下三种回应中的一种:

  • 如果要查找的文本出现在光标位置之后,则光标会跳到该文本出现的第一个位置。
  • 如果要查找的文本未在光标当前位置之后出现,则光标会绕过文件末尾,出现在该文本所在的第一个位置(并用一条消息指明)。
  • 输出一条错误消息,说明在文件中没有找到要查找的文本。

要继续查找同一个文本,可键入/(斜线键),然后键入回车键。或者键入n命令,表示下一个(next)。

vim编辑器在命令行模式下可使用替换命令。替换命令的格式是::s/old/new/

vim编辑器会跳到old第一次出现的地方,并用new来替换。还可用以下命令来替换多处文本:

  • :s/old/new/g :替换一行中的所有old
  • :n,ms:/old/new/g :替换行号n和m之间的所有old
  • :%s/old/new/g :替换整个文件中的所有old
  • :%s/old/new/gc :替换整个文件中的所有old,但在每次出现时提示,询问是否要替换

 

转载自Ramscy


没有谁的生活会一直完美,

但无论什么时候都要看着远方,

满怀希望就会所向披靡。

《撒野》

——巫哲