vim的基本用法
vim是一款Linux下的文本编辑器,当我们需要在终端环境下编辑文本时,vim就是我们最好的选择。vim看起来似乎对初学者不太友,但是想要上手使用vim并不困难。
认识vim
我们先来宏观的认识vim,vim常用的有四个模式:
- 正常模式(Normal-mode)
- 插入模式(Insert-mode)
- 命令模式(Command-mode)
- 可视模式(Visual-mode)
正常模式
当我们启动vim时,vim就处于正常模式,在正常模式下我们不能直接编辑文件,只能通过命令的形式使用复制,粘贴,剪切等操作来编辑文件。
在其它任何模式下,我们都可以通过按下Esc
键来返回正常模式(如果不行就按两下),其它模式都需要在正常模式
下按下相应的键位触发。
插入模式
在正常模式下我们按下一些键位就可以进入插入模式,这些按键较多,我们在基本操作中详细介绍这一部分的内容。
比较常用的是i
健,按下i
之后我们就可以进入插入模式,此时我们可以像平时编辑文件一样操作我们的文件。
命令模式
在按下/
或者:
键之后vim会进入命令模式,在命令模式下我们可以执行vim提供给我们的指令,具体的指令会在下面介绍。
可视模式
按下v
键即可进入可视模式,在可视模式下我们可以操作块状区域。
vim的基本操作
下面就开始介绍我们该如何使用vim
快速开始
我们先来介绍如何使用vim打开,编辑,保存文件,如果只是想在vim下简单的修改文件,这个部分的几个命令就足够了。
- vim打开文件:
1 | vim file |
- vim修改文件:
我们在vim正常模式下按下i
进入插入模式,此时你可以正常编辑文件。
- 保存文件
先退出至正常模式,然后输入:
进入命令模式,我们就可以键入vim命令:
w
:保存文件q
:退出文件!
:强制操作
如果不考虑效率问题,上面的三个操作已经可以满足你大部分的需求。
但是vim真正的强大之处就是强大的编辑能力,接下来我们继续了解vim的操作。
vim多窗口操作
vim打开多个文件
1 | vim file1 file2 file3 ... |
此时我们就同时打开了多个文件,我们可以用下面的方式操作这些打开的文件:
查看vim打开的文件
1 | :ls |
选择显示其它文件
1 | # 选择进入第二个文件 |
此外,我们可以使用分屏命令在一个终端中显示多个文件
下面的命令可以左右分屏:
1 | vim -O file1 file2 ... |
上下分屏:
1 | vim -o file1 file2 ... |
但是这样分屏不太灵活,使用vim内置命令是更好的选择,首先我们要记住一个重要的组合键Ctrl + w
,这是很多分屏操作的前置按键。
先按下Ctrl + w
,然后松开以后再按下s
,将当前文件上下分割。
Ctrl + w
,s
:上下分割文件。
Ctrl + w v
:左右分割文件
:sp file
:上下展示当前文件和新打开文件
:vsp file
:左右展示当前文件和新打开文件
我们现在已经开启多个窗口,我们还需要灵活的移动光标以操作多窗口
1.切换左右分屏的光标 :
1 | Ctrl + w h |
将当前光标定位到左边的屏幕
1 | Ctrl + w l |
将当前的光标定位到右边的屏幕
2.移动左右分屏 :
1 | Ctrl + w H |
将当前的分屏移动到左边
1 | Ctrl + w L |
将当前的分屏移动到右边
3.切换上下分屏的光标 :
1 | Ctrl + w j |
将当前的光标移动到下面的分屏
1 | Ctrl + w k |
将当前光标移动到上面的分屏
4.移动上下分屏:
1 | Ctrl + w J |
将当前的分屏移动到下面的分屏
1 | Ctrl + w K |
将当前的分屏移动到上面的分屏
vim的模式
下面来更详细的介绍一下正常模式,插入模式,命令模式和可视模式的用法。
正常模式
正常模式是vim的默认模式,在正常模式中有很多快捷键,是否熟练掌握这些快捷键很大程度上决定了我们vim的效率。
移动光标
h
:左
j
:下
k
:上
l
:右
行内移动光标
0
移动到行头
^
移动到本行的第一个不是 blank 字符
$
移动到行尾
g_
移动到本行最后一个不是 blank 字符的位置
w
光标移动到下一个单词的开头
e
光标移动到下一个单词的结尾
fa
移动到本行下一个为 a 的字符处,fb 移动到下一个为 b 的字符处
nfa
移动到本行光标处开始的第 n 个 字符为 a 的地方(n 是 1,2,3,4 … 数字)
Fa
同 fa
一样,光标移动方向同 fa
相反
nFa
同 nfa
类似,光标移动方向同 nfa
相反
ta
移动光标至 a 字符的前一个字符
nta
移动到第二个 a 字符的前一个字符处
Ta
同 ta
移动光标方向相反
nTa
同 nta
移动光标方向相反
;
和,
当使用 f, F, t ,T, 关键字指定字符跳转的时候,使用 ;
可以快速跳转到下一个指定的字符,,
是跳到前一个指定的字符
跨行移动光标
nG
光标定位到第 n 行的行首
gg
光标定位到第一行的行首
G
光标定位到最后一行的行首
H
光标定位到当前屏幕的第一行行首
M
光标移动到当前屏幕的中间
L
光标移动到当前屏幕的尾部
zt
把当前行移动到当前屏幕的最上方,也就是第一行
zz
把当前行移动到当前屏幕的中间
zb
把当前行移动到当前屏幕的尾部
%
匹配括号移动,包括 ( , { , [ 需要把光标先移动到括号上
*
和 #
匹配光标当前所在的单词,移动光标到下一个(或者上一个)匹配的单词( *
是下一个,#
是上一个)
翻页
ctrl+f
查看下一页内容
ctrl+b
查看上一页内容
复制,粘贴,删除
三个重要的快捷键 d
, y
, p
d
是删除的意思,通常搭配一个字符 ( 删除范围 ) 实现删除功能,常用的如下:
dw
删除一个单词
dnw
删除 n 个单词,
dfa
删除光标处到下一个 a 的字符处( fa 定位光标到 a 处 )
dnfa
删除光标处到第 n 个 a 的字符处
dd
删除一整行
ndd
删除光标处开始的 n 行
d$
删除光标到本行的结尾
dH
删除屏幕显示的第一行文本到光标所在的行
dG
删除光标所在行到文本的结束
y
是复制的意思,通常搭配一个字符(复制范围)实现复制的功能,常用的如下:
1 | yw` 复制一个单词,还有 `ynw |
y$
复制光标到本号的结尾
yH
复制屏幕显示的第一行文本到光标所在的行
yG
复制光标所在行到文本的结束
p
,P
是黏贴的意思,当执行完复制或者黏贴的命令以后,VIM 会把文本寄存起来。
p
在光标后开始黏贴
P
大写的 P 光标前开始粘贴
撤销与恢复
u
撤销刚才的操作
ctrl + r
恢复撤销操作
大小写转换
~
将光标下的字母改变大小写
3~
将光标位置开始的3个字母改变其大小写
g~~
改变当前行字母的大小写
gUU
将当前行的字母改成大写
guu
将当前行的字母全改成小写
3gUU
将从光标开始到下面3行字母改成大写
gUw
将光标下的单词改成大写。
guw
将光标下的单词改成小写
插入模式
请记住下面几个常用启动录入文本的键盘字符 i,I,a,A,o,O,s,S
。
i
是在光标所在的字符之前插入需要录入的文本。
I
是在光标所在行的行首插入需要录入的文本。
a
是在光标所在的字符之后插入需要录入的文本。
A
是在光标所在行的行尾插入需要录入的文本。
o
是光标所在行的下一行行首插入需要录入的文本。
O
是光标所在行的上一行行首插入需要录入的文本。
s
删除光标所在处的字符然后插入需要录入的文本。
S
删除光标所在行,在当前行的行首开始插入需要录入的文本。
命令模式
下面介绍一些常用的内置命令
set nu
:插入行号
set nonu
:删除行号
:n
:跳转至n行
/{目标字符串}
:查找目标字符串,在执行该命令后,按下n
跳转至下一个匹配,N
跳转至上一个匹配
:n1,n2d
:删除n1~n2
范围内的行
:{作用范围}s/{目标}/{替换}/{替换的标志}
:这是替换命令的格式
:s/{target}/{replace}/g
:替换当前行所有的目标字符串
:%s/{target}/{replace}/g
:替换全局的匹配字符串
:s/{target}/{replace}
:只替换当前行匹配到的第一个目标字符串
:%s/{target}/{replace}
:替换全局每一个的第一个匹配字符串(不是全局的第一个)
:n1,n2s/{target}/{replace}/g
:替换n1~n2
范围内的匹配字符串
:'<,'>s/{target}/{replace}/g
:在可视模式下,在我们选择中区域以后直接按下:
会补全为:'<,'>
,会替换选中区域的匹配字符串
:!command
:在命令模式下执行Linux命令
:r !command
:将命令的执行结果写入到光标位置
可视模式
在可视模式下,我们可以通过hjkl
上下左右移动区域,这与正常模式一致。
h
:左
j
:下
k
:上
l
:右
在选好区域后,我们可以退出可视模式进行复制,删除等操作。