vi
和vim
是Unix/Linux系统中常用的文本编辑器。尽管它们在外观和基本功能上有相似之处,但实际上vim
是vi
的改进版本,提供了更多高级功能和支持。
简介
vi编辑器
vi
(Visual editor)是最原始的文本编辑器之一,由Bill Joy在1970年代末期为Berkeley Unix开发。vi
编辑器分为三种模式:
- 命令模式(Command mode):这是启动vi时的默认模式。在此模式下,用户可以输入命令来编辑文本,如删除行、复制行等。
- 插入模式(Insert mode):在此模式下,用户可以输入文本。进入此模式的方式是从命令模式中输入
i
、a
、o
等命令。 - 末行模式(Last line mode):在此模式下,用户可以输入命令来保存文件、退出编辑器等。进入此模式的方式是从命令模式中输入冒号
:
。
vim编辑器
vim
(Vi IMproved)是对vi
编辑器的增强版,由Bram Moolenaar开发。vim
继承了vi
的基本功能,并添加了许多新的特性和改进,使之成为一款功能强大且广泛使用的编辑器。
特点
- 语法高亮:
vim
支持多种编程语言的语法高亮,使得代码更加易读。 - 多级撤销:
vim
提供了多级撤销功能,可以撤销多次编辑操作。 - 插件支持:
vim
支持大量的插件,可以通过安装插件来扩展功能。 - 图形界面支持:除了命令行界面外,
vim
还可以在图形界面环境下运行。 - 脚本语言:
vim
支持使用脚本语言(如Vimscript)编写宏和自动化任务。 - 增强的搜索功能:提供了更加强大的搜索和替换功能。
三种模式
vi
和vim
编辑器共有三种主要的工作模式:命令模式(Command Mode)、插入模式(Insert Mode)和底行模式(Ex Mode or Last Line Mode)。了解这三种模式及其转换方式是使用vi
和vim
的基础。
1. 命令模式(Command Mode)
这是启动vi
或vim
时的初始模式。在命令模式下,你可以输入各种编辑命令来操作文本文件。例如,你可以移动光标、删除文本、复制行等。
常用命令:
-
移动光标:
h
:向左移动一个字符。j
:向下移动一行。k
:向上移动一行。l
:向右移动一个字符。- 数字 + 方向键:按指定次数移动。
-
复制/剪切/删除文本:
yy
:复制当前行。dd
:删除当前行。x
:删除当前字符。dw
:删除到单词末尾。Ctrl+w
:删除当前单词。
-
粘贴:
p
:粘贴到光标后。P
:粘贴到光标前。
-
撤销/重做:
u
:撤销上一次操作。Ctrl+r
:重做撤销的操作。
-
查找文本:
/pattern
:向前查找pattern
。?pattern
:向后查找pattern
。
-
替换文本:
:%s/old/new/g
:全局替换old
为new
。
如何进入插入模式:
i
:在当前光标位置前插入文本。a
:在当前光标位置后插入文本。o
:在当前行下方新开一行插入文本。O
:在当前行上方新开一行插入文本。A
:在行尾插入文本。I
:在行首插入文本。C
:删除当前行并进入插入模式。R
:替换模式,替换光标所在位置的字符。
2. 插入模式(Insert Mode)
当你使用上面列出的任何一种方式进入插入模式后,就可以直接在屏幕上输入文本了。在插入模式下,你可以像使用任何其他文本编辑器一样输入文本。
如何回到命令模式:
- 按
Esc
键或使用Ctrl + [
组合键。
3. 底行模式(Ex Mode or Last Line Mode)
底行模式是通过在命令模式下输入冒号:
进入的。在此模式下,可以执行一系列复杂的编辑命令,如保存文件、退出编辑器、设置选项等。
常用命令:
-
保存文件:
:w
:保存文件。:w filename
:另存为新文件。:wq
:保存并退出。:wq!
:强制保存并退出(如果有权限问题)。:q!
:不保存直接退出。
-
读取文件:
:r filename
:读取另一个文件的内容并附加到当前位置。
-
设置选项:
:set nu
:显示行号。:set nonu
:不显示行号。:set autoindent
:自动缩进。:set nocp
:关闭文件时取消更改。
-
执行脚本命令:
:!ls
:执行shell命令ls
。:!pwd
:执行shell命令pwd
。
使用示例
启动vim
启动vim编辑器很简单,只需在终端中输入:
vim filename.txt
基本操作
- 进入插入模式:从命令模式中输入
i
、a
、o
等命令进入插入模式。 - 保存文件:在命令模式下输入
:w
来保存文件。 - 退出编辑器:在命令模式下输入
:q
来退出编辑器。如果文件已被修改但未保存,则需要输入:q!
来强制退出,或者:wq
来保存并退出。
更多命令
- 复制一行:
yy
- 粘贴:
p
- 删除一行:
dd
- 查找文本:
/pattern
(按n
跳到下一个匹配,N
跳到上一个匹配) - 替换文本:
:%s/old/new/g
(全局替换)
总结
vi
是一个较为古老的编辑器,适用于基本的文本编辑任务。vim
是vi
的改进版,提供了更多的功能和更好的用户体验,适合开发人员使用。- 无论使用
vi
还是vim
,熟悉其基本操作模式和常用命令都是非常重要的。
如果你是初学者,建议从vim
开始学习,因为它的功能更强大,社区支持更好,并且有更多的资源可供学习。