每个 Linux 用户必须知道的基本 Vim 命令 [附 PDF 备忘单]
解释基本 vim 命令的综合指南,对任何 Linux 用户(无论是系统管理员还是开发人员)都有用。
无论您是系统管理员还是软件开发人员,如果您在 Linux 终端中工作,您都会面临需要在终端中编辑文本文件的情况。
当您仅限于终端时,您必须使用命令行编辑器之一,例如 Vim。我们大多数人都习惯了 GUI 编辑器,这会导致问题,因为使用命令行编辑器与使用 Atom 等图形文本编辑器不同。
有多种命令行文本编辑器可用,您可以随意使用其中任何一个。 Vim 是最流行的命令行文本编辑器之一,您会发现它安装在任何标准 Linux 发行版上。这就是为什么学习 Vim 基础知识会对你有很大帮助。
现在,这并不是让您成为 Vim 专家的综合指南。这是一本全面的 Vim 指南,旨在为您提供足以在 Linux 终端中使用 Vim 的知识。
我希望您确实在 Ubuntu 或您正在使用的任何 Linux 发行版上安装了 Vim。
您应该了解的基本 Vim 命令
如果您以前使用过 Vim,也许您只是想通过查看此 Vim 备忘单来刷新您的记忆:
- i
进入插入模式
- Esc
进入命令模式
- x or Del
删除一个字符
- X
删除字符是退格模式
- u
取消更改
- Ctrl + r
重做更改
- yy
复制一行
- dd
删除一行
- p
粘贴缓冲区的内容
- /<search_term>
搜索然后循环显示 n 和 N 的匹配项
- [[ or gg
移至文件开头
- ]] or G
移至文件末尾
- :%s/foo/bar/gci
搜索并替换所有出现的情况并进行确认
- Esc + :w
保存更改
- Esc + :wq or Esc + ZZ
保存并退出 Vim
- Esc + :q!
强制退出 Vim 放弃所有更改
您也可以下载 PDF 格式的上述命令。下载、打印并将其放在办公桌上以供快速参考。
别担心,我还将详细解释这些基本的 Vim 命令。
了解 Vim 模式
在开始之前,我们先了解一下 Vim 模式。 Vim 有三种模式:
命令模式:当您启动 Vim 时,您将进入命令模式。在此模式下,您可以在屏幕上移动、删除文本和复制文本。
插入模式:您无法在命令模式下写入文本。要将文本(或者说插入文本)写入文件,有一个专用的插入模式。当你想在文件上写东西时,你必须进入插入模式。
视觉模式:有点像命令模式,但在这里,您可以使用箭头键跨行选择文本(而不是根据光标位置直接处理单词和行)。
了解 Vim 模式后,让我们看看一些用于各种目的的基本 Vim 命令。
在 Vim 中进入插入模式
永远记住,i 代表插入模式。 按“i”键进入插入模式。
当您进入插入模式时,您将在编辑器/终端屏幕的底部看到“INSERT”。这表明您处于插入模式。
但 i 并不是进入插入模式的唯一方法。还有其他几个命令可以在 Vim 中进入插入模式。进入插入模式时,光标位置很重要。
i – 新文本将出现在光标之前
a – 新文本将出现在光标后面
I – 新文本将出现在当前行的开头
A – 下一个文本将出现在当前行的末尾
o – 在当前行之后创建新行
O – 在当前行之前创建新行
返回 Vim 中的命令模式
您从命令模式开始,然后进入插入模式。如果您想返回命令模式,请按 Esc(退出)键。
输入文本后,我建议按 Esc 键进入命令模式。这样,您就不会在不知不觉中、不由自主地输入任何新文本。提示:如果您不记得其他内容,请记住按“i”键进入插入模式,按 Esc 键进入命令模式。这应该足够了。
在 Vim 中移动
当您使用 Vim 时,您无法像普通文本或代码编辑器一样使用鼠标单击屏幕中的点。这就是为什么你需要知道 Vim 中特定行、单词或位置的移动命令。
Vi/Vim 纯粹主义者建议在命令模式下使用 h、j、k 和 l 键分别向上、向左、向右和向下移动。虽然这适用于 Vi 和 Vim 编辑器,但我不喜欢使用这些奇怪的组合键。
冷知识:当 Vi 编辑器刚开发出来时,大多数键盘都没有方向键。这就是为什么使用 h、j、k、l 键进行移动。
我使用箭头键在 Vim 中移动。即使您在 Vim 中处于插入模式,它也能正常工作。 这是大多数新一代都习惯的标准出行方式。
如果您是 Linux 或 Vim 新手,您可以选择方向键。没有造成任何伤害。
但是,如果您想更熟练地使用 Vim,您可能需要记住一些 Vim 快捷键,以便轻松地在屏幕上移动。我最喜欢的一些 Vim 移动命令是:
H – 移动到屏幕顶部。请注意,它并不总是意味着移至文件中的第一行。它只是为了移动到可见屏幕的顶部。
L – 移动到屏幕底部。请注意,这并不总是意味着移至文件的最后一行。它只是为了移动到可见屏幕的底部。
M – 移动到屏幕中间。
[[ – 移至文件的第一行。你也可以在这里gg。
]] – 移至文件的最后一行。您也可以在这里使用 G。
nG – 移至第 n 行。请注意,输入行号时您不会在屏幕上看到任何内容。
提示:您可以通过进入命令模式并输入 :set number 在 Vim 中显示行号
正如您所看到的,通过这些附加的移动命令,您可以更轻松地在大文本文件中移动。您可以学习更多移动命令,例如用于来回移动段落的 { 和 },用于逐字移动的 w 等。
您还可以使用“重复修饰符”,就像您刚刚在 Vim 中的大多数命令中看到的 nG 一样。比如你用5w,就会移动5个字。如果使用6H,它将移动到屏幕顶部的第6行。
中继修饰符也适用于“i”,这就是很多人犯错误的地方。如果您在按“i”进入插入模式之前不小心按了像 7 这样的数字,则您输入的任何文本都将被添加 7 次。在开始保存文档之前,您不会立即在屏幕上看到它。
那么当你犯了这样的愚蠢错误时该怎么办呢?撤消它。
撤消 Vim 中的更改
如果你在 Vim 中犯了一个错误,你不必永远忍受它。我还看到有人在这种情况下退出编辑器而不进行保存,这有点荒谬。
Vim 允许您撤消和重做更改。您也可以重做您的更改。当然,这一切都适用于同一会话。保存更改后,您将无法撤消它。
要撤消更改,请进入命令模式并按“u”键。您可以按多次以执行多个撤消操作。
如果要重做更改,请在命令模式下按 Ctrl+r 组合键。您可以按几次以执行多个重做操作。
在 Vim 中删除
除了撤消更改之外,您可能还想从文件中删除一些文本。在 Vim 中,您始终可以使用删除键来删除字符,但是有一些组合键可以更好地处理 Vim 中的删除操作。
x – 删除当前光标位置的字符,就像删除键一样
X – 删除当前光标位置之前的字符,如退格键。请注意,退格键本身在 Vim 中不起作用。
dw——删除单词。实际上,它会删除从当前光标位置到当前单词末尾及其后面的空格。
dd – 删除当前行。
d$– 从当前光标位置删除直到行尾。
dG – 从当前光标位置删除直到文件末尾。
注意:Vim 中没有剪切命令,因为当您删除某些内容时,删除的文本会放入缓冲区中。换句话说,删除命令就是剪切命令。
在 Vim 中复制粘贴
您可能想知道如何在 Vim 中复制粘贴。这是一个合理的担忧,因为您不会总是输入文本。
Vim 中有两种复制和粘贴。一种处理缓冲区,另一种处理“外部”文本。
当您处于命令模式时,您可以使用 Linux 终端快捷方式复制文本,也可以使用以下组合键复制文本:
yw – 复制单词。实际上,它从当前光标位置复制到当前单词的末尾加上其后的空格。
yy – 复制当前行。
y$– 从当前光标位置复制到行尾。
yG – 从当前光标位置复制到文件末尾。
假设您使用了上面讨论的删除命令之一。删除的文本被放入缓冲区。您可以使用以下两个粘贴命令从缓冲区粘贴此文本:
p – 将缓冲区的内容粘贴到光标位置之前
P – 将缓冲区的内容粘贴到光标位置之后
请注意,如果您删除了一整行,则使用上述粘贴命令会将内容放置在当前行之前或之后。
粘贴命令仅适用于 Vim 缓冲区。您从其他文件复制的文本怎么样?在这些情况下,您可以使用 Linux 终端的标准复制和粘贴组合键。
在Ubuntu和许多其他Linux发行版的默认终端中,Ctrl+Shift+C用于复制,Ctrl+Shift+V用于粘贴。在其他一些终端中,选择文本会复制它,然后您可以使用右键单击来粘贴它。
无论在 Linux 终端中复制粘贴的方式是什么,您也可以在 Vim 中使用它。只需确保您处于此类复制粘贴的插入模式即可。
在 Vim 中搜索文本
查找特定文本是文本编辑器的一项重要功能。您可以使用“/”在 Vim 中搜索文件中的文本。
在命令模式下,使用 /,然后键入搜索文本并按 Enter 键。您将在屏幕左下角看到您输入的任何内容。
它将从您的光标位置向前搜索搜索的术语。您还可以使用“?”,然后输入搜索词并按 Enter 执行向后搜索。请注意,搜索区分大小写。
如果您的搜索文本有多个匹配项,您可以按 n 键跳转到下一个位置。如果您想返回上一场比赛,请按 N。基本上,使用 n 和 N 您可以循环浏览所有比赛。提示:您可以使用 \c 选项在 Vim 中运行不区分大小写的搜索。示例:/\cMy_Search
在 Vim 中搜索和替换
Vim 提供了替换命令 (:s) 用于搜索和替换文本。它严重依赖正则表达式 (regex) 进行搜索和替换。
您可以按以下方式使用它:
:%s/foo/bar/g
上面的命令将把整个文件中的所有“foo”替换为“bar”。末尾的“g”负责扩展所有匹配项的搜索和替换功能。否则,仅替换第一个匹配项。
:s/foo/bar/g
‘:s’命令将执行与上面完全相同的功能,但仅在当前行而不是整个文件中执行。
默认情况下,搜索区分大小写。为了使其不区分大小写,您可以将标志“i”与 g 一起使用。
:%s/foo/bar/gci
我在这里添加了一个额外的“c”标志。实际上,您可能对在几秒钟内替换整个文档中的整个匹配文本的想法感到不舒服。这就是‘c’标志有很大帮助的地方。有了这个确认标志,Vim 会要求你确认是否要在每场比赛中执行替换。
在确认模式下,您将看到以下选项:替换为 UU (y/n/a/q/l/^E/^Y)?
让我解释一下这里的选择:
y – 是,替换此匹配项
n – 不,不要替换这场比赛并移至下一场
a – 替换所有匹配项
q – 退出而不替换任何匹配项
l – 替换该匹配并退出,就像它是最后一个匹配一样
^E – 向上滚动屏幕
^Y – 向下滚动屏幕
提示:如果您不记得其他所有内容,只需记住 :%s/foo/bar/gci 将尝试用您的确认替换整个文件中的所有匹配项。
保存并退出 Vim
您刚刚学习了 Vim 命令的基础知识。是时候保存你的工作并退出 Vim 了。要保存或退出 Vim,必须先按 Esc 键进入命令模式。然后您可以使用以下选项:
:w – 保存更改但不退出
:wq – 保存并退出
:q – 只需退出(如果您有未保存的更改,您将看到此警告:E37:自上次更改后没有写入(添加!以覆盖))
:q! – 强制退出(它将放弃任何未保存的更改)
下载 PDF 格式的 Vim 命令备忘单
我可以理解,如果您是 Vim 新手,记住刚刚学到的内容可能会很困难。这就是为什么我创建了一个基本 vim 命令列表及其快速解释的原因。
您可以下载此 PDF 格式的 Vim 备忘单,打印出来并放在办公桌上以供快速参考。
与 Vim 一起走得更远
好吧,您刚刚学习了在这个可怕的文本编辑器中生存所需的所有 Vim 基础知识。有了这些知识,您就可以在 Vim 中阅读文本、搜索文本并进行一些基本编辑。当您想到使用像 Vim 这样的终端文本编辑器时,这足以让您免于恐慌。
您应该将此页面添加为书签,以刷新您在此处学到的 Vim 知识。您还可以使用 vimtutor 命令。大多数 Linux 发行版都安装了 vimtutor 命令。如果您想刷一下 Vim 知识或练习 Vim 命令,只需在终端中运行 vimtutor 即可。
如果您想将 Vim 技能提升到新的水平,我强烈推荐快速掌握 Vim 资源。这是值得投资的。
我希望本指南能帮助您开始使用 Vim。如果您有疑问或建议,请留言。