Skip to main content

vim basic learn

tip

导语:Vim 作为一款强大而高效的文本编辑器,一直备受程序员和技术爱好者的喜爱。本篇教程将带你逐步掌握 Vim 的各种技巧和功能,助你成为一名真正的 Vim 大师。

一、Vim的起源和特点,以及为什么选择使用Vim作为文本编辑器

选择Vim作为文本编辑器是一个明智的决定。
它的高效性、可定制性和强大的编辑功能使得它成为程序员和技术爱好者的首选工具。
通过学习和掌握Vim,你将能够更加高效地编辑文本,提高工作效率,成为一名技术的高手。

Vim 的基础操作

2.1 使用光标移动命令

在Vim中,有多种方式可以移动光标到不同的位置。以下是Vim中光标移动的一些常用命令:

使用方向键进行光标移动:

上移:k 或 ↑
下移:j 或 ↓
左移:h 或 ←
右移:l 或 →

使用快捷键进行光标移动:

行首:0
行尾:$
文件开头:gg
文件结尾:G
下一页:Ctrl + f
上一页:Ctrl + b

使用单词为单位进行光标移动:

向前移动一个单词:w
向后移动一个单词:b
移动到下一个单词的开头:e

使用行号进行光标移动:

移动到指定行:行号 + G,例如:10G 将光标移动到第 10 行

使用搜索进行光标移动:

向前搜索:/ + 关键词 + Enter
向后搜索:? + 关键词 + Enter
继续向后搜索:n
继续向前搜索:N

快速移动

1.ctrl+F 将屏幕向下滚动一屏

2.ctrl+u pageUp,ctrl+d pageDown

3.行内移动:W,b在单词间移动,ge向上跳,f + word 根据单词查找移动,0开头,$,结尾

4.行间移动:#、* 移动到同一个单词,f+{ 定位{},使用%号就可以在{}之间位移,删除{}里面内容,di{

5.跳转到函数定义 gd, goto define

这些是Vim中常用的光标移动命令,可以通过组合使用它们来实现更精确的光标定位。
同时,Vim还提供了很多其他的光标移动命令和选项,可以根据需要进行深入学习和探索。

2.2 删除命令

当涉及到删除文本时,Vim提供了许多命令和操作。以下是Vim中常用的大部分删除文本的命令:

删除字符:

x:删除光标所在位置的字符
X:删除光标所在位置的前一个字符
dl:删除光标所在位置的字符

删除单词:

dw:删除光标所在位置的单词
db:删除光标所在位置的前一个单词
de:删除光标所在位置及其后面的单词

删除行:

dd:删除光标所在的整行
:行号d:删除指定行号的行,例如:10d删除第10行

删除多行:

V 进入可视模式,使用上下移动光标选择多行,然后按 d 删除选中的行

删除选定区域:

v 进入可视模式,移动光标选择文本,然后按 d 删除选定的文本

删除到行末:

D:删除光标所在位置到行末的字符
d$:删除光标所在位置及其后面的文本

删除到行首:

d0:删除光标所在位置到行首的字符

删除到特定位置:

dt字符:删除光标所在位置到指定字符的前一个字符
df字符:删除光标所在位置到指定字符的位置

删除到匹配字符:

d%:删除光标所在位置到匹配括号的对应括号

删除到指定行:

  • :行号,行号d:删除指定范围内的行,例如:10,20d删除10到20行

删除到指定匹配行:

  • :/pattern/d:删除匹配指定模式的行,例如:/TODO/d删除包含"TODO"的行

这些是Vim中常用的删除文本的命令,可以根据具体的需求选择合适的命令来进行删除操作。
同时,Vim还提供了更多的删除命令和选项,可以根据需要进行深入学习和探索。

2.3 复制和粘贴命令

在Vim中,复制和粘贴文本可以使用以下常用命令:

复制命令:

yy:复制光标所在行
nyy:复制从光标所在行开始的 n 行(例如:3yy 复制光标所在行及其后两行)
yiw:复制光标所在位置的单词
y$:复制从光标所在位置到行末的文本
y^:复制从光标所在位置到行首的文本
yG:复制从光标所在行到文件末尾的文本
ygg:复制从光标所在行到文件开头的文本
v 进入可视模式,移动光标选择文本,然后按 y 复制选中的文本

剪切命令:

dd:剪切光标所在行
ndd:剪切从光标所在行开始的 n 行(例如:3dd 剪切光标所在行及其后两行
d$:剪切从光标所在位置到行末的文本
d^:剪切从光标所在位置到行首的文本
dG:剪切从光标所在行到文件末尾的文本
dgg:剪切从光标所在行到文件开头的文本
v 进入可视模式,移动光标选择文本,然后按 d 剪切选中的文本

粘贴命令:

p:在光标下一行粘贴剪切板中的文本
P:在光标上一行粘贴剪切板中的文本\

交换命令:

xp:交换光标所在字符和下一个字符的位置
这些是Vim中常用的复制和粘贴命令。可以根据具体的需求选择合适的命令来进行复制和粘贴操作。
同时,Vim还提供了更多的复制和粘贴命令和选项,可以根据需要进行深入学习和探索。

2.4 替换和查找命令

在Vim中,查找和替换是常见的编辑操作。以下是Vim中常用的查找和替换命令:

查找命令:

/pattern:向下查找匹配指定模式的文本,按 n 查找下一个匹配项,按 N 查找上一个匹配项
?pattern:向上查找匹配指定模式的文本,按 n 查找下一个匹配项,按 N 查找上一个匹配项
*:向下查找光标所在单词的下一个匹配项
#:向上查找光标所在单词的上一个匹配项\

替换命令:

:s/old/new:替换当前行第一个匹配的 old 为 new,例如 :s/foo/bar 替换当前行第一个 foo 为 bar
:s/old/new/g:替换当前行所有匹配的 old 为 new,例如 :s/foo/bar/g 替换当前行所有 foo 为 bar
:%s/old/new:替换整个文件中第一个匹配的 old 为 new
:%s/old/new/g:替换整个文件中所有匹配的 old 为 new
:%s/old/new/gc:替换整个文件中所有匹配的 old 为 new,并且每次替换前都要进行确认\

替换特定范围内的文本:

:startline,endline s/old/new/g:在指定范围内替换所有匹配的 old 为 new,例如 :10,20s/foo/bar/g 在第10行到第20行之间替换所有的 foo 为 bar

查找并替换命令:

:%s/old/new/gc:替换整个文件中所有匹配的 old 为 new,并且每次替换前都要进行确认
这些是Vim中常用的查找和替换命令。根据具体的需求,可以选择适当的命令进行查找和替换操作。
同时,Vim还提供了更多高级的查找和替换命令和选项,可以根据需要进行深入学习和探索。\

2.5 撤销命令

撤销和重做:

u:撤销上一步操作
Ctrl + r:重做上一步撤销的操作

2.6 文件操作命令

在Vim中,有许多文件操作相关的命令可以帮助你进行文件的保存、打开、关闭和管理。以下是一些常用的Vim文件操作命令:

打开文件:

:e filename:在当前窗口中打开指定的文件
:split filename:在新的水平窗口中打开指定的文件
:vsplit filename:在新的垂直窗口中打开指定的文件
:tabedit filename:在新的标签页中打开指定的文件

保存文件:

:w:保存文件
:w filename:将当前文件另存为指定的文件名
:x:wq:保存文件并退出\

关闭文件:

:q:关闭当前文件(如果没有修改)
:q!:强制关闭当前文件(放弃修改)
:wq:x:保存文件并退出
:xa:保存所有修改的文件并退出

文件管理:

:ls:列出当前打开的文件列表
:bnext:bn:切换到下一个缓冲区(文件)
:bprevious:bp:切换到上一个缓冲区(文件)
:bdelete:bd:关闭当前缓冲区(文件)

查找文件内容:

:vimgrep /pattern/ files:在指定的文件中查找匹配指定模式的文本,并在Quickfix窗口中显示结果
:cnext:cn:在Quickfix窗口中跳转到下一个匹配项
:cprevious:cp:在Quickfix窗口中跳转到上一个匹配项

这些是Vim中常用的文件操作命令,可以帮助你方便地进行文件的打开、保存、关闭和管理。

三、Vim 的进阶操作

以下是一些常见的组合操作和进阶的使用方法:

多行编辑:

Ctrl + v:进入可视块模式,可以选中多行文本进行批量操作,例如复制、删除、替换等。
Shift + I:在可视块模式下,按下 Shift + I,然后输入要插入的文本,按下 Esc,可以在选中的每一行的行首插入相同的文本。

宏录制和重放:

q:开始录制宏,并将宏保存到指定的寄存器中(例如 qz 表示录制到寄存器 z)。
q:停止录制宏。
@:重放指定的宏(例如 @z 表示重放寄存器 z 中的宏)。
@@:重放上一次使用的宏。

分屏和标签页:

:split:sp:水平分割窗口。
:vsplit:vsp:垂直分割窗口。
Ctrl + w + hjkl:在分割的窗口之间切换光标焦点。
:tabnew:tabe:打开新的标签页。
gt:在标签页之间切换。

代码折叠:

zf:创建折叠。
zo:打开折叠。
zc:关闭折叠。
zr:打开所有折叠。
zm:关闭所有折叠。

插件管理:

使用插件管理器(如Vundle、Pathogen、vim-plug)来安装和管理插件。
在.vimrc文件中配置插件,并使用:PluginInstall命令来安装插件。
一些常用的插件包括:NERDTree(文件浏览器)、CtrlP(快速文件查找)、YouCompleteMe(自动补全)等。

四、很多人不知道但又十分好用的命令

Vim有很多人们可能不知道但非常好用的命令。如下一些常见的但可能被忽视的好用命令:

Ctrl + o 和 Ctrl + i:在编辑模式下,Ctrl + o 可以暂时切换到普通模式执行一个命令,然后返回编辑模式。Ctrl + i 可以在切换到普通模式后返回最近的位置。

:g/pattern/command:使用全局命令(g)来在整个文件中匹配指定的模式(pattern),然后执行指定的命令(command)。例如,:g/foo/d 将删除所有包含 "foo" 的行。

:normal command:在每一行上执行普通模式下的命令(command)。例如,:normal dd 将删除每一行。

:%s/foo/bar/gc:执行全局替换命令(:%s)来将 "foo" 替换为 "bar"。添加 c 标志可以进行确认替换,每次替换前都会询问。

:r!command:将命令(command)的输出插入到当前位置。例如,:r!date 将插入当前日期和时间。

:set spell:打开拼写检查功能。使用 ]s 和 [s 来跳转到下一个和上一个拼写错误。

:sort:对所选行或整个文件进行排序。例如,:%sort 将对整个文件进行排序。

:earlier 15m 和 :later 15m:在编辑会话中,可以使用 :earlier:later 命令来回滚或前进到之前的状态。例如,:earlier 15m 将回滚到过去 15 分钟的状态。

参考与致谢

评论区