介绍
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。
没有谁的生活会一直完美,
但无论什么时候都要看着远方,
满怀希望就会所向披靡。
《撒野》
——巫哲
评论
还没有任何评论,你来说两句吧!