Vim(Vi IMproved)是一款强大的文本编辑器,广泛用于Unix和Linux系统。它具有高度可定制性和丰富的功能集,使其成为程序员、系统管理员和文本编辑爱好者的首选工具之一。
1、模式
正常模式(Normal Mode):
-
正常模式是 Vim 的默认模式,它用于导航、编辑、复制和粘贴文本,以及执行各种命令。
-
在正常模式下,按键被解释为命令,而不是直接插入文本。
-
用于导航的键包括
h
(左)、j
(下)、k
(上)、l
(右),以及其他命令如w
(向前移动一个词)、b
(向后移动一个词)、gg
(跳转到文件开头)和G
(跳转到文件末尾)等。 -
用于删除和复制文本的命令包括
x
(删除字符)、dd
(删除整行)、yy
(复制整行)等。 -
可以使用
:
进入命令模式,执行各种命令,如保存文件:w
、退出:q
等。
插入模式(Insert Mode):
-
插入模式用于输入文本,类似于普通文本编辑器的行为。
-
进入插入模式的方式包括:
-
i
:在光标前插入文本。 -
I
:在当前行的开头插入文本。 -
a
:在光标后插入文本。 -
A
:在当前行的末尾插入文本。 -
o
:在当前行的下方插入新行并进入插入模式。 -
O
:在当前行的上方插入新行并进入插入模式。
-
-
从插入模式返回正常模式通常使用
Esc
键。
可视模式(Visual Mode):
-
可视模式允许选择文本块以进行操作,如复制、删除或替换。
-
进入可视模式的方式包括:
-
v
:按字符选择。 -
V
:按行选择。 -
Ctrl + v
:按块选择。
-
-
一旦选择文本块,可以执行命令来操作选定的文本。
命令模式(Command-Line Mode):
-
在正常模式下,键入冒号
:
进入命令模式,用于执行各种命令。 -
常见的命令包括:
-
:w
:保存文件。 -
:q
:退出 Vim。 -
:q!
:强制退出 Vim,放弃未保存的更改。 -
:wq
或:x
:保存并退出。 -
:e
:重新加载文件。 -
:r
:在当前位置插入另一个文件的内容。 -
:set
:配置 Vim 选项。
-
替换模式(Replace Mode):
-
替换模式用于覆盖文本,逐字符替换已有文本。
-
进入替换模式的方式包括:
-
R
:按字符替换。 -
r
:按需替换单个字符。
-
2、切换模式
从正常模式切换到插入模式:
-
插入模式用于在文本中输入或编辑内容,类似于普通文本编辑器的行为。
-
在正常模式下,可以使用以下命令来切换到插入模式:
-
i
:在光标前插入文本。 -
I
:在当前行的开头插入文本。 -
a
:在光标后插入文本。 -
A
:在当前行的末尾插入文本。 -
o
:在当前行的下方插入新行并进入插入模式。 -
O
:在当前行的上方插入新行并进入插入模式。
-
-
一旦进入插入模式,可以自由地键入文本,直到按下
Esc
键返回正常模式。
从正常模式切换到可视模式:
-
可视模式允许选择文本块以进行操作,如复制、删除或替换。
-
在正常模式下,可以使用以下命令来切换到可视模式:
-
v
:按字符选择。 -
V
:按行选择。 -
Ctrl + v
:按块选择。
-
-
一旦进入可视模式,可以使用导航键来选择文本块,然后执行命令来操作选定的文本。
从插入模式返回正常模式:
-
从插入模式返回正常模式通常使用
Esc
键。按下Esc
键会立即退出插入模式,并将光标定位回正常模式下的当前位置。
3、导航
基本导航命令:
-
使用以下键在正常模式下进行基本的导航:
-
h
:将光标向左移动一个字符。 -
j
:将光标向下移动一行。 -
k
:将光标向上移动一行。 -
l
:将光标向右移动一个字符。
-
-
这些键在键盘上排列成一个类似箭头键的形状,以便记忆。
词级导航:
-
Vim 允许以词为单位移动光标,而不是逐字符移动。以下是词级导航的常见命令:
-
w
:将光标向前移动到下一个单词的开头。 -
b
:将光标向后移动到当前单词的开头。 -
e
:将光标移动到当前单词的末尾。 -
ge
:将光标移动到前一个单词的末尾。
-
行级导航:
-
可以使用以下命令在行级别上导航:
-
0
(零):将光标移到当前行的开头。 -
$
:将光标移到当前行的末尾。 -
^
:将光标移到当前行的第一个非空字符。
-
文件级导航:
-
可以使用以下命令在文件级别上导航:
-
gg
:将光标移到文件的第一行。 -
G
:将光标移到文件的最后一行。 -
:<行号>
:将光标移到指定行号。
-
滚动导航:
-
可以使用以下命令进行滚动导航:
-
Ctrl + u
:向上滚动半屏。 -
Ctrl + d
:向下滚动半屏。 -
Ctrl + b
:向上滚动一屏。 -
Ctrl + f
:向下滚动一屏。
-
搜索导航:
-
搜索命令可以帮助您快速定位文本。在正常模式下,按
/
进入搜索模式,输入要搜索的文本,然后按Enter
键开始搜索。使用n
键和N
键在搜索结果之间移动。
书签导航:
-
可以使用书签来标记文本的特定位置,然后轻松跳转到这些位置。以下是一些书签命令:
-
m<标记>
:将光标位置标记为指定的<标记>
。 -
'
或 ````:跳转到上一个书签。 -
`:<标记>
:跳转到指定的书签。
-
4、编辑文本
删除文本:
-
在正常模式下,可以使用以下命令来删除文本:
-
x
:删除光标下的字符。 -
dd
:删除整行。 -
D
:删除从光标位置到行末的文本。 -
:n1,n2d
:删除指定行范围(n1 到 n2)的文本。
-
复制和剪切文本:
-
在正常模式下,可以使用以下命令来复制和剪切文本:
-
yy
:复制当前行。 -
y$
:复制从光标位置到行末的文本。 -
p
:粘贴之前复制或剪切的文本。 -
:n1,n2y
:复制指定行范围(n1 到 n2)的文本。 -
:n1,n2d
:剪切指定行范围(n1 到 n2)的文本。
-
粘贴文本:
-
在正常模式下,使用
p
命令可以粘贴最近复制或剪切的文本。粘贴操作会在光标位置后方插入文本。
替换文本:
-
在正常模式下,可以使用以下命令来替换文本:
-
r<字符>
:用指定字符替换光标下的字符。 -
R
:进入替换模式,可以连续替换多个字符,按Esc
退出替换模式。
-
插入文本:
-
插入模式用于在文本中插入新内容。可以在正常模式下使用以下命令进入插入模式:
-
i
:在光标前插入文本。 -
I
:在当前行的开头插入文本。 -
a
:在光标后插入文本。 -
A
:在当前行的末尾插入文本。 -
o
:在当前行的下方插入新行并进入插入模式。 -
O
:在当前行的上方插入新行并进入插入模式。
-
撤销和重做:
-
在正常模式下,可以使用以下命令来撤销和重做操作:
-
u
:撤销最后的操作。 -
Ctrl + r
:重做操作(撤销的反操作)。
-
全局替换:
-
可以使用
:s
命令在文件中进行全局替换操作。例如,:s/old/new/g
将文件中的所有old
替换为new
。
多光标编辑:
-
Vim 支持多光标编辑,可以使用
Ctrl + v
进入可视块模式,选择多个光标位置,然后同时编辑这些位置的文本。
5、搜索和替换
搜索文本:
-
正向搜索:在正常模式下,按
/
进入搜索模式。输入要搜索的文本,然后按Enter
键开始搜索。使用n
键移动到下一个匹配项,使用N
键移动到上一个匹配项。 -
反向搜索:在正常模式下,按
?
进入反向搜索模式。输入要搜索的文本,然后按Enter
键开始反向搜索。使用n
键移动到上一个匹配项,使用N
键移动到下一个匹配项。 -
高亮匹配项:默认情况下,Vim 会高亮匹配的文本。若要关闭或打开高亮显示,可以在正常模式下使用
:set hlsearch
或:set nohlsearch
命令。 -
搜索选项:可以在搜索命令中使用一些选项,如
/pattern/i
可以忽略大小写,/pattern/n
可以禁用正则表达式匹配。 -
搜索下划线和其他特殊字符:如果要搜索下划线等特殊字符,可以使用
\
进行转义,例如/my\_variable/
。 -
使用寻找命令:在正常模式下,按
*
可以寻找光标下的单词,然后使用#
寻找上一个匹配项。
替换文本:
-
替换当前匹配项:在正常模式下,可以使用
:s
命令来替换当前匹配项。例如,要将当前单词old
替换为new
,可以输入:s/old/new/
。 -
全局替换:若要替换文件中的所有匹配项,可以在替换命令中使用
g
标志,如:%s/old/new/g
。 -
替换并确认:若要逐个确认替换每个匹配项,可以在替换命令中使用
c
标志,如:%s/old/new/gc
。 -
替换范围内的文本:可以使用
:n1,n2s
命令来替换指定行范围内的文本。例如,:10,20s/old/new/g
会在第 10 行到第 20 行之间进行全局替换。 -
替换回退:Vim 会在替换操作之前自动创建一个回退点,以便可以撤销替换。在正常模式下,可以使用
u
命令来撤销替换。 -
替换确认:在替换模式下,可以按下
y
来确认替换当前匹配项,按下n
来跳过当前匹配项。 -
替换和保存:如果想在替换文本的同时保存文件,可以使用
:w
命令,如:%s/old/new/g | w
。
6、多窗口
打开和关闭窗口:
-
水平分屏:在正常模式下,可以使用以下命令来创建水平分屏窗口:
-
:split <文件路径>
:创建水平分屏窗口并打开指定文件。 -
:split
或Ctrl + w
之后按s
:创建水平分屏窗口,将当前文件分为上下两个部分。
-
-
垂直分屏:在正常模式下,可以使用以下命令来创建垂直分屏窗口:
-
:vsplit <文件路径>
:创建垂直分屏窗口并打开指定文件。 -
:vsplit
或Ctrl + w
之后按v
:创建垂直分屏窗口,将当前文件分为左右两个部分。
-
-
关闭窗口:
-
在窗口中,可以使用以下命令关闭当前窗口:
-
:q
:关闭当前窗口。 -
:q!
:强制关闭当前窗口并放弃更改。 -
:wq
或:x
:保存并关闭当前窗口。
-
-
若要在不关闭 Vim 实例的情况下关闭所有窗口,请使用
:qall
。
-
切换窗口:
-
切换焦点:在多窗口环境中,可以使用以下命令切换焦点到不同的窗口:
-
Ctrl + w
,然后按Ctrl + w
:循环切换焦点到下一个窗口。 -
Ctrl + w
,然后按h
、j
、k
或l
:将焦点分别切换到左、下、上、右的窗口。
-
-
切换窗口布局:可以使用以下命令更改窗口布局:
Ctrl + w
,然后按R
:旋转当前窗口布局,将水平分屏转为垂直分屏或反之。
调整窗口大小:
-
调整窗口大小:在多窗口中,可以使用以下命令调整窗口大小:
-
Ctrl + w
,然后按<
或>
:增加或减少当前窗口的宽度。 -
Ctrl + w
,然后按+
或-
:增加或减少当前窗口的高度。
-
-
均等分屏:如果希望均等分割窗口,可以使用以下命令:
Ctrl + w
,然后按=
:将所有窗口均等分布在 Vim 窗口中。
多文件操作:
-
打开多个文件:在 Vim 中可以同时打开多个文件。例如,可以在命令行中运行
vim file1.txt file2.txt
来同时打开两个文件。 -
在窗口之间复制粘贴:在多窗口中,可以使用
:sp
和:vsp
命令来将一个窗口中的内容复制到另一个窗口。
7、配置文件
创建和编辑配置文件:
-
创建配置文件:如果系统上尚不存在
.vimrc
文件,可以使用文本编辑器创建一个。在终端中运行以下命令:touch ~/.vimrc -
编辑配置文件:使用文本编辑器打开
.vimrc
文件,例如:vim ~/.vimrc,可以在配置文件中添加和编辑各种配置选项,以自定义 Vim 的行为。
配置选项:
-
缩进设置:设置
tabstop
、shiftwidth
和expandtab
选项来控制缩进的方式。例如:set tabstop=4 set shiftwidth=4 set expandtab -
行号和列号:启用行号和列号的显示,使得在编辑时更容易定位位置。例如:set number set relativenumber
-
自动缩进:启用自动缩进,以便在插入模式中自动进行适当的缩进。例如:set autoindent
-
语法高亮:启用语法高亮以提高代码的可读性。例如:syntax enable
-
主题和颜色:使用不同的颜色方案来改变 Vim 的外观。例如:colorscheme desert
-
搜索设置:配置搜索选项,如忽略大小写、高亮显示匹配项等。例如:set ignorecase set smartcase set hlsearch
-
显示设置:配置 Vim 显示的一些选项,如行末空格可视化、显示光标当前位置等。例如:set list set showmatch
-
键映射和快捷键:创建自定义键映射和快捷键,以加快编辑操作。例如:nnoremap <C-n> :NERDTreeToggle<CR>
-
插件管理器设置:如果使用插件管理器(如 vim-plug、Vundle 等),可以在配置文件中添加插件列表和设置。例如:
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-fugitive'
call plug#end()
保存和应用配置:
-
保存配置文件:在编辑完
.vimrc
文件后,使用:w
命令保存更改。 -
应用配置:在 Vim 中编辑
.vimrc
文件后,可以使用以下命令使配置生效,而无需退出 Vim::source ~/.vimrc,或者可以重新启动 Vim 以应用新的配置。
8、插件
安装插件:
-
Vim-Plug:Vim-Plug 是一个流行的插件管理器,易于安装和使用。可以在
.vimrc
文件中添加插件列表,然后运行:PlugInstall
命令来安装插件。 -
Vundle:Vundle 是另一个常见的插件管理器,它也使用
.vimrc
配置文件来管理插件。可以使用:PluginInstall
命令来安装插件。 -
Pathogen:Pathogen 是一种更传统的插件管理器,它允许将每个插件放置在单独的目录中,并通过简单地将插件目录添加到 Vim 的运行时路径中来加载插件。
常见插件用途:
-
代码编辑插件:
-
代码编辑插件可用于增强编程体验,包括语法高亮、代码折叠、自动完成、代码片段、代码导航等功能。一些流行的代码编辑插件包括:
-
vim-airline
:自定义状态栏。 -
YouCompleteMe
:强大的自动完成和代码建议插件。 -
NerdTree
:文件树浏览器。
-
-
-
主题和外观插件:
-
主题和外观插件用于改变 Vim 的外观,包括颜色方案、状态栏、行号等。一些主题插件包括:
-
gruvbox
:受欢迎的暗色调主题。 -
solarized
:另一个受欢迎的颜色方案。 -
lightline
:轻量级状态栏插件。
-
-
-
文件管理和导航插件:
-
文件管理和导航插件用于更轻松地浏览和管理文件系统。一些文件管理插件包括:
-
NERDTree
:文件树浏览器。 -
CtrlP
:快速文件搜索和切换插件。 -
fzf
:模糊文件搜索和快速查找插件。
-
-
-
版本控制插件:
-
版本控制插件用于与版本控制系统(如 Git)集成,以在 Vim 中管理代码库。一些版本控制插件包括:
-
vim-fugitive
:强大的 Git 插件。 -
GitGutter
:显示行内 Git 状态信息。
-
-
-
文本处理和编辑插件:
-
文本处理和编辑插件用于执行各种文本操作,如文本搜索、替换、排序和格式化。一些文本处理插件包括:
-
Ag
:快速搜索文本。 -
Surround
:快速添加、更改和删除文本周围的符号。 -
vim-easymotion
:快速移动光标。
-
-
9、在线帮助
:help
命令:
-
在 Vim 中,可以随时使用
:help
命令来访问在线帮助系统。只需在正常模式下键入:help
,然后输入想要了解的主题、命令或选项的名称,然后按Enter
键。例如: -
:help
:打开帮助索引。 -
:help :w
:查看:w
命令的帮助。 -
:help insert-mode
:查看插入模式的帮助。
帮助索引:
-
:help
命令将打开帮助索引,该索引包含了关于 Vim 的广泛文档。可以使用以下键盘命令来导航和查找帮助文档: -
使用上下箭头键或
j
和k
键在不同主题之间导航。 -
按
Ctrl + ]
键跳转到当前选定主题的详细信息。 -
按
Ctrl + t
键返回到上一个主题。 -
使用
/
键来搜索关键字,然后按Enter
键查找匹配项。 -
使用
:q
命令退出帮助系统。
帮助标签页:
-
帮助系统支持多个标签页,允许在不同主题之间切换。以下是一些常用的标签页命令:
-
:help tab-page
:打开标签页帮助。 -
:tabnew
或:help :tabnew
:打开新标签页。 -
:tabnext
和:tabprev
:在标签页之间切换。 -
:tabclose
或:q
:关闭当前标签页。
特定主题的帮助:
-
如果知道自己想要查看特定主题的帮助,可以直接使用
:help
命令,后跟主题名称。例如: -
:help motions
:查看有关移动命令的帮助。 -
:help text-objects
:查看有关文本对象(如单词、段落等)的帮助。
内置教程:
-
Vim 带有一些内置教程,可以通过
:vimtutor
命令启动。这是一个交互式的教程,可以帮助新用户学习 Vim 的基本功能。
离线帮助:
-
如果使用的是 Vim 的源代码分发版本,通常会包含完整的离线帮助文档。这些文档可以在本地查看,无需互联网连接。
这些是 Vim 的基本概念和一些常用命令,Vim 具有丰富的功能和命令,允许用户高效地编辑文本。要充分发挥 Vim 的威力,需要不断练习和学习,并逐渐掌握更高级的功能和定制选项。可以在Vim内部查看帮助文档来深入了解其功能和用法。