介绍
vim 编辑器是可从命令行访问的最强大的文本编辑器之一。 vim 建立在可追溯到 1976 年的编辑器 "vi" 的基础上,增加了额外的功能和功能,同时保持了其前身的编辑风格。
本指南将介绍 vim 的安装和基本用法。
目录
安装
由于 vim 在 Linux 命令行上的广泛使用,它几乎可以在每个发行版的默认存储库中使用。
在 Ubuntu 和 Debian 上,使用 apt-get 安装:
sudo apt-get install vim
在 Fedora 和 CentOS 上,使用 yum 安装:
sudo yum install vim
在 Arch Linux 上,vim 可以通过 packman 安装:
sudo pacman -S vim
现在应该正确安装 Vim。
打开 Vim
默认情况下,当不带任何参数调用 vim 时,它会打开一个空白文档。 根据您的发行版,可能会有介绍和许可信息。 当您开始使用编辑器时,这将消失。
但是,我们不会用空白文档打开 vim。 我们将创建一个名为“newfile”的示例文档来展示 vim 的功能。
echo "This is a new file. Here is the second line And here is the third line. Some more text is on this line. We will edit this file in vim. It will be great fun." >> newfile
现在,我们将使用 vim 打开刚刚创建的文件。
vim newfile
模态编辑
vim 和大多数其他编辑器的主要区别在于 vim 是一个“模态”编辑器。 大多数其他编辑器只有一种模式。 在这些编辑器中,特殊的编辑功能,如复制文本,是通过按住一个或多个修改键然后按常规键来执行的。 Vim 使用不同的模式将这些功能与正常文本输入的任务分开。
正常模式
用于编辑操作。 复制、粘贴、移动、删除和更改文本都是在此模式下完成的。
在 vim 中,编辑功能是通过将 vim 置于“正常”模式来执行的。 普通模式是 vim 在打开程序时所处的模式。 此模式用于快速浏览文本文档并执行编辑。 它不用于输入文本。
- [esc] - 按“退出”键进入正常模式。
插入模式
用于在文档中插入新文本。 可以通过多种方式进入插入模式。
要输入文本,vim 必须转换到“插入”模式。 插入模式类似于大多数其他文本输入程序的打字界面。 您键入的内容会出现在文档的屏幕上。 所有普通键都会在当前光标位置产生相应的字符。
- i - 在当前光标位置进入插入模式。
- a - 在当前位置之后进入插入模式。
- I - 在当前行的开头进入插入模式。
- A - 在当前行的末尾进入插入模式。
视觉模式
用于视觉选择。 在正常模式下可用的许多命令可以应用于文本的特定突出显示部分。
vim 使用的第三种模式是“可视”模式。 这用于文本的视觉选择和操作。 文本区域被突出显示为后续编辑或格式化命令的目标。
- v - 进入常规视觉模式。 通过上下左右移动光标进行选择。
- V - 进入视线模式。 通过上下移动选择整行,从第一个字符到最后一个字符。
- [ctrl]-v - 进入视觉块模式。 一个框用于可以扩展和收缩的选择。 使用此方法可以选择多行的部分。
命令模式
用于发出 vim 命令。 使用冒号键进入此模式。
用于复杂编辑、更改设置和控制 vim 本身的附加模式是“命令”模式。 此模式用于保存文档、退出程序、执行复杂搜索和许多其他事情。
- : - 进入命令模式。
导航
基本导航
总是可以使用箭头键来导航文本,但 vim 提供了更快的方式在文档中移动。 在普通模式下,您可以使用 h、j、k 和 l 键分别向左、向下、向上和向右移动。
- h - 向左移动。
- j - 向下移动。
- k - 向上移动。
- l - 向右移动。
这些方向键起初可能看起来令人困惑和违反直觉,但选择它们是有原因的。 它们位于典型键盘的主行。 这意味着用户的手从静止位置移动的次数明显少于使用传统的箭头键。
高级导航
还有其他导航快捷方式。 以下是一些最有用的:
- gg - 移动到文档的顶部。
- G - 移动到文档的底部。 以数字开头以转到该行号。
- w - 移动到下一个单词。 以数字开头来移动那么多单词。
- b - 后退一个字。 前言用一个数字向后移动那么多单词。
- e - 移动到单词的末尾。 以数字开头来移动那么多单词。
- 0 - 移动到行首。
- $ - 移动到行尾。
编辑
在 vim 中编辑文本是通过在正常模式下发出命令来完成的。
重要的是要意识到 vim 中的编辑命令与运动命令结合使用时非常强大。 navigation 部分中的任何内容都可以用作方向。 例如,您可以对带有“w”的单词执行编辑命令。
以下是您可以选择的一些不同操作:
删除文本
- x - 删除光标位置下的字符。
- d - 发出命令后按您指定的方向删除。 例如,“dl”删除右边的一个字符。
- dd - 删除一行。
- D - 从当前位置删除到行尾。
更改文本
- r - 用不同的字符替换光标下的字符。 发出此命令后,给出您要替换的字符。
- c - 按以下方向更改文本。 例如,“cw”更改当前单词。 发出此命令后,vim 将进入插入模式,以便您可以提供替换文本。
- C - 将文本更改到行尾。 这会将 vim 置于插入模式。
复制和粘贴
- y - 沿以下方向复制(或“拉动”)。
- yy - 复制整行。
- Y - 复制到行尾。
- p - 将最后一行复制(或删除!)粘贴到当前行下方。
- P - 将复制(或删除!)的最后一行粘贴到当前行上方。
杂项编辑
- u - 撤消上一个动作。
- -r - 重做最后一个动作。
- J - 将下面的行加入当前行。
管理文件
Vim manages documents mainly through its command mode. Commands are issued by typing a ":" before each command.
- :q - 退出 vim。 如果更改尚未保存,这将失败。
- :q! - 退出 vim 并丢弃任何未保存的更改。
- :w - 保存更改。 如果您想保存到其他位置或者这是您第一次指定保存位置,请添加空格和文件名。
- :e - 编辑后面的文件。
- :bn - 编辑 vim 打开的下一个文件。
- :bp - 编辑 vim 打开的上一个文件。
把它们放在一起
如前所述,vim 的强大之处在于它能够将不同的命令链接在一起。 掌握这个概念的最简单方法是将 vim 命令视为一种语言。 普通模式下的键可以表示形容词、动词和宾语。
例如,要 yank(复制)4 个单词,只需将该短语翻译成 vim 识别的命令即可。 在这种情况下,它将是:
y4w
要从当前行删除到文件末尾,请键入:
dG
了解 vim 用于其编辑命令的一些约定也很有帮助。 例如,双字母通常应用于整行。 我们可以复制一整行:
yy
另一方面,编辑命令的大写版本通常从当前光标位置定位到行尾。 例如,要将文本从此处更改到行尾,您可以使用:
C
要在多行上执行相同的动作,只需在命令中添加编号前缀即可。 这会将文本从当前位置更改为以下行的末尾:
2C
还有许多其他强大的技术可以与 vim 一起使用,这些技术超出了本指南的范围。 如果您想了解更多信息,最好从 vim 的内置教程界面开始。 它不会涵盖高级主题,但会让您了解如何使用 vim 进行基本编辑。 你可以这样开始:
vimtutor