vi和vim区别
vi
和 vim
是常见的文本编辑器,以下是它们之间的区别:
-
功能和特性:
vi
是最早的版本,是在早期Unix系统中广泛使用的编辑器。vi
相对较简单,功能主要集中在基本的文本编辑操作上,如插入、删除、查找、替换等。它没有语法高亮、分屏编辑等一些现代编辑器常见的功能。vim
(Vi IMproved)是vi
的增强版本,它保留了vi
的基本功能,同时添加了大量的高级特性和扩展。vim
支持语法高亮、代码折叠、多窗口编辑、多级撤销、宏录制等,还有许多插件和定制选项可用。
-
用户界面:
vi
和vim
都使用基于文本终端的字符界面。它们没有图形界面,而是在终端中使用命令和键盘快捷键来操作和编辑文本。
-
兼容性:
vi
通常是系统默认的编辑器,可以在几乎所有类Unix系统中使用,包括 Linux 和 macOS。vim
是对vi
的增强,并且是一个独立的项目。它也可以在类Unix系统中使用,并且可以在各种平台上进行编译和安装,如 Linux、macOS、Windows 等。因此,vim
是更广泛使用的版本。
总结来说,vi
是最初的版本,相对简单,并且几乎在所有类Unix系统中可用。而 vim
是 vi
的增强版本,提供更多功能和特性,是更强大和广泛使用的文本编辑器。对于大多数用户来说,vim
是更好的选择,尤其是对于需要更复杂编辑任务的开发者和程序员。
vi和vim三种模式
三种模式转换
vi
和 vim
都具有三种基本模式,它们是普通模式(Normal Mode),插入模式(Insert Mode)和命令行模式(Command-Line Mode)。这些模式之间的切换如下:
-
普通模式(Normal Mode):这是
vi
和vim
的默认模式,用于移动光标、复制、粘贴、删除等编辑操作。- 从插入模式(Insert Mode)切换到普通模式:按下
Esc
键。 - 从命令行模式(Command-Line Mode)切换到普通模式:按下
Esc
键。
- 从插入模式(Insert Mode)切换到普通模式:按下
-
插入模式(Insert Mode):在这个模式下,你可以输入和编辑文本。
- 从普通模式切换到插入模式:按下
i
键。这将光标放置在当前位置,以便开始在光标后插入文本。 - 从普通模式切换到插入模式并在行首插入:按下
I
键。 - 从普通模式切换到插入模式并在下一行插入:按下
o
键。
- 从普通模式切换到插入模式:按下
-
命令行模式(Command-Line Mode):在这个模式下,你可以执行一些编辑器的命令和操作。
- 从普通模式切换到命令行模式:按下
:
(冒号)键。 - 从插入模式切换到命令行模式:按下
Esc
键,然后按下:
(冒号)键。
- 从普通模式切换到命令行模式:按下
在命令行模式下,你可以输入各种命令,如保存文件、退出编辑器、查找替换等。例如:
- 保存文件:在命令行模式下输入
:w
,然后按下回车。 - 退出编辑器:在命令行模式下输入
:q
,然后按下回车。 - 同时保存并退出:在命令行模式下输入
:wq
,然后按下回车。
要注意,在 vim
中,还有一个可视模式(Visual Mode),用于高亮选择文本块。你可以使用 v
键从普通模式切换到可视模式。
通过合理的切换和使用这些模式,可以更高效地进行文本编辑和操作。
普通模式快捷键
当然,以下是普通模式下常用的一些快捷键列表:
-
光标移动:
h
:左移一个字符。j
:下移一行。k
:上移一行。l
:右移一个字符。0
:移动到行首。^
:移动到行首第一个非空字符。$
:移动到行尾。gg
:移动到文档开头。G
:移动到文档末尾。w
:向前移动到下一个单词的开头。b
:向后移动到上一个单词的开头。%
:在括号之间进行跳转。
-
文本编辑:
i
:在当前光标位置之前插入文本。a
:在当前光标位置之后插入文本。o
:在当前行之后打开新行并进入插入模式。O
:在当前行之前打开新行并进入插入模式。x
:删除光标处的字符。r
:替换光标处的字符。u
:撤销上一次操作。Ctrl+r
:恢复上一次被撤销的操作。
-
复制粘贴与删除:
yy
:复制当前行。dd
:删除当前行。p
:粘贴剪贴板内容到光标后。P
:粘贴剪贴板内容到光标前。yw
:复制从光标处到单词结尾的字符。y$
:复制从光标处到行尾的字符。dw
:删除从光标处到下一个单词开头的字符。d$
:删除从光标处到行尾的字符。x
:删除光标处的字符。
-
查找与替换:
/keyword
:向前查找关键字。?keyword
:向后查找关键字。n
:跳转到下一个匹配项。N
:跳转到上一个匹配项。:s/old/new
:替换当前行第一个匹配项。:s/old/new/g
:替换当前行所有匹配项。:%s/old/new/g
:替换整个文档中的所有匹配项。
命令行模式快捷键
:w
:保存当前文档。:w <filename>
:另存为指定的文件名。:r <filename>
:读取指定文件名的文档插入到当前位置。:q
:退出编辑器,前提是文档未做任何修改。:q!
:不保存修改直接退出编辑器。:wq
:保存修改并退出编辑器。:set nu
:在行首显示行号。:set nonu
:不显示行号。:set hlsearch
:设置搜索结果高亮显示。!command
:回到终端窗口,执行command命令,按回车键可切回vim。