Vim是一款文本编辑器,是Vi编辑器的增强版。Vim的特点是快速、高效、定制强、编辑功能强大、可扩展性好等。作为一款强大而又具有学习曲线的文本编辑器,Vim有很多命令需要掌握。在本篇博客中,将向您介绍Vim的基础概述,并提供Vim命令的详尽列表,以供您参考。
Vim最初是为Unix系统编写的,但如今Vim已被移植到许多不同的操作系统平台上。使用Vim可以以非常高效的速度编辑各种编程语言、标记语言、文本等文件。除了高效、可扩展和具有强大的编辑功能之外,Vim还具有许多值得一提的特点:
Vim共有以下6种常见的模式:
i
、a
、o
或 Insert
键)即可进入插入模式。v
键即可进入可视模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。R
键即可进入替换模式。:
键即可进入命令行模式。Vim的各种工作模式可以通过不同的键进行切换,均需使用Esc
键返回到普通模式
在Vim中,可以使用光标移动命令来在普通模式下操作光标位置。下面是一些常用的光标移动命令:
单个字符的移动:
h
:向左移动一个字符l
:向右移动一个字符j
:向下移动一行k
:向上移动一行xh
:向左移动x个字符距离单词的移动:
w
:向后移动一个单词,移动到下一个单词的开头b
:向前移动一个单词,移动到前一个单词的开头e
:将光标移动到下一个单词的词末,如果光标不在当前单词的词尾时会移动到当前单词的词尾E
:移动到单词的结尾(忽略标点符号)ge
:将光标移动到上一个单词的词末xw
:指定移动的x次数行的移动:
0
:将光标移动到当前行的行首。$
:将光标移动到当前行的行尾。^
:将光标移动到当前行的第一个非空字符处(行首和当前行非空字符不是一个位置)。2|
:将光标移动到当前行的第二个字符处。|
表示列。fx
:在当前行中向前查找字符 x
,将光标定位到下一个出现的字符位置。3fx
:在当前行中向前查找字符 x
,将光标定位到第三个出现的字符位置。tx
:在当前行中向前查找字符 x
,将光标定位到下一个出现的字符前一个位置(即停在字符 x
前一个位置)。%
:在匹配的括号间进行跳转,比如在括号或引号的一对匹配中,移动到相匹配的括号或引号处。【注意】f
和 t
命令与字符相关,而数字前缀(如 2
和 3
)表示执行多次操作。
文本块的移动:
(
:将光标移动到当前 \ 上一个句子的开头。句子以句号、问号或感叹号结尾。)
:将光标移动到下一个句子的开头。{
:将光标移动到当前 \ 上一个段落的开头。段落由空行或一系列连续的非空行组成。}
:将光标移动到下一个段落的开头。[[
:将光标移动到当前 \ 上一个函数或块的开头。]]
:将光标移动到下一个函数或块的开头。在屏幕中的移动
gg
:移动到文件的第一行G
:移动到文件的最后一行xG
:将光标移动到文件的第 x
行,其中 x
是行号H
:移动到当前屏幕的顶部行M
:移动到当前屏幕的中间行L
:移动到当前屏幕的底部行Ctrl+f
:向前翻页Ctrl+b
:向后翻页Ctrl+u
:向屏幕上方滚动半个屏幕的高度。Ctrl+d
:向屏幕下方滚动半个屏幕的高度。Ctrl+b
:向屏幕上方滚动一个屏幕的高度。Ctrl+f
:向屏幕下方滚动一个屏幕的高度。zt
:将当前行移动到屏幕顶部。zz
:将当前行移动到屏幕中间。zb
:将当前行移动到屏幕底部。:N
:将光标移动到第 N 行。i
:在光标所在位置插入文本。I
:在当前行的第一个非空字符插入文本。a
:在光标位置之后插入文本。A
:在当前行的行末插入文本。o
:在光标所在行的下一行插入新行,并进入插入模式。O
:在光标所在行的上一行插入新行,并进入插入模式。s
:删除当前光标下的字符,并进入插入模式,可以立即开始编辑替换的文本。S
:删除当前行,并进入插入模式,可以立即开始编辑替换的文本。相当于先按 dd
删除当前行,再按 i
进入插入模式。u
:撤销最近的修改操作。在插入模式下,可以使用以下命令退出插入模式:
Esc
:回到普通模式。Ctrl+C
:同样是回到普通模式,但较 Esc
更不易误触。在插入模式下,还可以用以下命令进行编辑:
Ctrl+H
:删除前一个字符(等同于 Backspace 键)。Ctrl+W
:删除前一个单词。Ctrl+U
:清空当前行之前的所有输入。Ctrl+E
:将编辑器中光标所在行的下一行显示在屏幕上。字符的删除:
x
:删除光标所在位置的字符。X
:删除光标前面的字符(相当于 Backspace 键)。单词的删除:
dw
:删除从光标所在位置到下一个单词开头的所有字符。d$
:删除从光标所在位置到行末的所有字符。daw
:删除包括光标所在的单词的所有字符(包括前后空格)。diw
:删除光标所在单词内的所有字符(不包括前后空格)。d2w
:删除当前单词和下一个单词。d0
:删除从行首到光标位置的所有字符。d
1:删除从行首到光标位置的第一个字符,等同于x。dh
:删除光标前一个字符,等同于X。行的删除:
dd
:删除当前行,并将其保存到寄存器中以备粘贴。5dd
:删除当前行及其下面的 4 行。D
:删除从光标位置到行末的所有字符。:n1,n2d
:删除从行号 n1
到 n2
的所有行。dgg
:删除从当前行到文件开头的所有行。dG
:删除从当前行到文件末尾的所有行。行的合并:
J
:将当前行和下一行合并为一行。复制:
yy
:复制当前行,并将其保存到寄存器中以备粘贴。yw
:复制从光标所在位置到单词末尾的所有字符。y$
:复制从光标所在位置到行末的所有字符。3yw
:复制从光标所在位置开始的 3 个单词(包括空格)。:n1,n2y
:复制从行号 n1
到 n2
的所有行。剪切:
dd
:删除当前行,并将其保存到寄存器中以备粘贴。dw
:删除从光标所在位置到下一个单词开头的所有字符。d$
:删除从光标所在位置到行末的所有字符。3dw
:删除从光标所在位置开始的 3 个单词(包括空格)。:n1,n2d
:删除从行号 n1
到n2
的所有行。粘贴:
p
:在光标下方插入已复制或剪切的文本。P
:在光标上方插入已复制或剪切的文本。复制文本块
Ctrl + V
进入可视块模式。hjkl
键移动光标,选择要复制的文本块。y
键复制选择的文本块。复制的内容将被保存在寄存器中,以供后续粘贴使用。p
键将文本块粘贴到当前光标位置的下方。P
键将文本块粘贴到当前光标位置的上方。cw
:用于修改当前光标所在的单词。cb
:将光标移动到当前单词的开始处。cc
:用于删除整行并进入插入模式,可以输入替换的文本。~
:用于更改当前所在位置的字符的大小写(大写转小写、小写转大写)。r
:用于替换单个字符,将当前光标所在的字符替换为一个新的字符。R
:用于进入替换模式,将会替换光标后的的所有字符。xp
:用于交换当前光标所在位置的字符和其下一个字符的位置。查找
/pattern
:在 Vim 中,可以使用 /
后跟要查找的模式进行搜索。例如,输入 /keyword
可以在文本中查找关键字 “keyword”。?pattern
:与上述类似,不同之处在于在问号后查找模式,例如 ?keyword
。n
:在查找模式下,按下 n
键可以跳转到下一个匹配项。N
:在查找模式下,按下大写的 N
键可以跳转到上一个匹配项。替换
:s/pattern/replacement/
:这是 Vim 中进行替换的基本格式。其中 pattern
是要查找的模式,replacement
是要替换成的内容。例如,:s/old/new/
会将当前行中的第一个 “old” 替换为 “new”。:s/pattern/replacement/g
:在后面添加 g
标志,会替换所有匹配项,而不仅仅是每行的第一个匹配项。:%s/pattern/replacement/g
:在 %
前加上 :
号,可以对整个文档执行全局替换,而不只是当前行。在文本编辑过程中,撤销修改和重做操作是非常重要的。此外,保存文本是确保你的更改被永久保存的一种方式。下面是一些常见的命令和操作:
撤销修改
u
:按下 u
键可以撤销最近的修改。每按一次 u
键,就会撤销上一次的修改。Ctrl + r
:按下 Ctrl + r
键可以重做被撤销的修改。每按一次 Ctrl + r
键,就会重做上一次被撤销的修改。保存文本
:w
:这是 Vim 中保存文本的基本命令。在命令模式下,输入 :w
可以将当前文本保存到文件中。如果没有指定文件名,则会保存到原始文件中。:w filename
:如果你想将文件保存为特定的文件名,可以在 :w
命令后面加上文件名。例如,:w newfile.txt
将会将文件保存为名为 “newfile.txt” 的文件。:saveas filename
:这个命令会将当前文本保存到指定的文件名,类似于另存为。输入命令 :saveas newfile.txt
将会在当前目录下创建一个名为 “newfile.txt” 的副本,并将文本保存到该文件中。U
:按下大写的 U
键可以撤销对整行的所有修改,将行恢复到上一次保存时的状态。q
:在命令模式下,输入 q
可以退出 Vim。如果有未保存的修改,Vim 会发出警告并阻止退出。你可以按下 q!
来强制退出 Vim,丢弃未保存的修改。wq
:这是组合命令,可以将文本保存并退出 Vim。在命令模式下,输入 :wq
将会将文本保存到文件中,并退出 Vim 编辑器。wq!
:类似于上述的 wq
命令,但加上了 !
表示强制保存。即使文件是只读模式或者没有写权限,也会强制保存并退出。e!
:该命令用于放弃当前的修改并重新加载文件。在命令模式下,输入 :e!
将会放弃所有未保存的修改,并重新加载原始文件。打开多个文件:
vim file1.txt file2.txt
:在启动 Vim 时,可以通过在命令行上指定多个文件名来打开多个文件。例如,这个命令会同时将 “file1.txt” 和 “file2.txt” 文件加载到 Vim 中。在已打开的文件之间切换:
:n
:在普通模式下,输入 :n
可以跳到下一个打开的文件。:N
:在普通模式下,输入 :N
可以跳到上一个打开的文件。在已打开的文件之间切换并保存:
:n
或者 :wn
:在普通模式下,输入 :n
或者 :wn
可以切换到下一个文件并保存当前文件。:N
或者 :wN
:在普通模式下,输入 :N
或者 :wN
可以切换到上一个文件并保存当前文件。查看已打开的文件列表:
:ls
:在命令模式下,输入 :ls
可以列出当前已打开的文件列表。在已打开的文件之间切换编辑区域:
Ctrl + ww
:在正常模式下,按下 Ctrl + ww
可以在不同的分割窗口中切换编辑区域。标签页(Tabs):
创建标签页:
:tabnew
:在当前标签页中创建新的空白标签页。:tabnew filename
:在当前标签页中创建一个以指定文件名命名的新标签页。标签页切换:
gt
:在普通模式下,按下 gt
可以切换到下一个标签页。gT
:在普通模式下,按下 gT
可以切换到上一个标签页。标签页操作:
:tabs
:在命令模式下,输入 :tabs
可以列出当前打开的标签页。:tabclose
:在命令模式下,输入 :tabclose
可以关闭当前标签页。:tabonly
:在命令模式下,输入 :tabonly
可以关闭所有标签页,除了当前标签页。折叠栏(Folds):
创建折叠:
zf
:在普通模式下,先使用移动光标命令移动到要折叠的行,然后输入 zf
可以创建折叠。zF
:在普通模式下,选中多行文本后,输入 zF
可以创建一个包含选中文本的折叠。打开/关闭折叠:
zo
:在普通模式下,将光标移动到已折叠的行上,然后按下 zo
可以展开折叠。zc
:在普通模式下,将光标移动到已展开的折叠行上,然后按下 zc
可以关闭折叠。操作折叠:
zc
:折叠当前的折叠。zC
:递归折叠当前折叠下的所有折叠。zd
:删除当前折叠。zE
:删除当前折叠下的所有折叠。水平分割窗口:
:split
或者 Ctrl + w + s
:在当前窗口的下方创建一个新的水平分割窗口。:split filename
:在当前窗口的下方创建一个新的水平分割窗口,并打开指定的文件。垂直分割窗口:
:vsplit
或者 Ctrl + w + v
:在当前窗口的右侧创建一个新的垂直分割窗口。:vsplit filename
:在当前窗口的右侧创建一个新的垂直分割窗口,并打开指定的文件。在窗口之间切换:
Ctrl + w + w
:在正常模式下,按下 Ctrl + w + w
可以在不同的窗口之间切换焦点。Ctrl + w + h
:在正常模式下,按下 Ctrl + w + h
可以将焦点切换到左边的窗口。Ctrl + w + j
:在正常模式下,按下 Ctrl + w + j
可以将焦点切换到下方的窗口。Ctrl + w + k
:在正常模式下,按下 Ctrl + w + k
可以将焦点切换到上方的窗口。Ctrl + w + l
:在正常模式下,按下 Ctrl + w + l
可以将焦点切换到右边的窗口。关闭窗口:
:close
:在当前窗口中,输入 :close
命令会关闭当前窗口。:q
:在当前窗口中,输入 :q
命令也可以关闭当前窗口(如果只剩下一个窗口,则关闭 Vim)。调整窗口大小:
Ctrl + w + +/-
:在正常模式下,按下 Ctrl + w
后接 +
或 -
可以增加或减小当前活动窗口的高度。Ctrl + w + >/<
:在正常模式下,按下 Ctrl + w
后接 >
或 <
可以增加或减小当前活动窗口的宽度。感谢大家阅读这篇关于Vim命令操作的指南。通过本文,详细介绍了Vim中各种常用的命令操作,包括光标移动、文本编辑、多窗口操作等功能,希望这些内容能够帮助你更高效地使用Vim编辑器进行文本处理和编程工作。
Vim作为一个强大灵活的文本编辑工具,拥有丰富的功能和操作方式,使得它成为许多开发者和系统管理员钟爱的利器。通过不断地练习和使用,相信你也能够熟练掌握Vim的各种技巧,从而提高工作效率并享受到编程的乐趣。
如果你喜欢这篇博客或者有任何疑问、建议,欢迎在评论区与我分享。