文章目录
一、什么是VIM
在说vim之前,先说下什么是vi。vi是visual interface
的简称,是Linux中最经典的文本编辑器。vi的核心设计思想是:让程序员的手始终保持在键盘的核心区域就能够完成所有的编辑操作。而Vim又是从 vi 发展出来的一个文本编辑器,即vi improved
,它在代码补全、编译及错误跳转等方便编程的功能上特别丰富,在程序员中被广泛使用。
为方便理解,也给出上图的英文版
从这张图就可以看出,vim的命令繁多,不过灵活使用后将会大大提高效率。对于新手可先不必理会上图,下文会把常用的使用方法一一道来,助你入门。
二、VIM入门
首先你要明白的一点是,VIM有3种主要的工作模式:
- 命令模式(Command mode)
用户启动vim时,首先进入的便是命令模式。命令模式可认为是vim的入口,此模式下敲击键盘的字符都会被当做命令,而非在文本中插入字符。比如,我想打出我的名字kevin,我敲下键盘上的 k k k键,屏幕上并不会显示出 k k k字符,事实上,屏幕上什么反应也没有。这时候,不要怀疑电脑坏了,而是你并没有进入插入模式,暂时还不能进行插入的操作。那命令模式下都有哪些命令呢?诸如移动、选择、复制、粘贴、删除、查找、替换、缩进、撤销、恢复、定位、翻页……
都是在命令模式下完成的。关于这些命令后面还会介绍,这里大家先掌握进入插入模式的命令之一:i
。当在命令模式下输入i后,便进入了插入模式,然后就可以正常地编辑文字了。 - 插入模式(Insert mode)
此模式下可以正常地编辑文字,与平时使用习惯差别不大。 - 底行模式(Last line mode)
此模式下可以执行保存、退出以及其他的一些功能。按下Shift+:即可进入底行模式。输入wq
为保存退出,输入q!
为不保存退出。
此外,还有其他一些模式,如可视模式(Visual)
、替换模式(Replace)
等,将会在下文进行介绍。
三、常用命令介绍
1. 移动
- 方位移动
h
:光标左移一格
j
:光标下移一格
k
:光标上移一格
l
:光标右移一格
当然,关于上下左右的移动使用方向键也是允许的。 - 行内移动
0
:光标移至行首
$
:光标移至行尾
^
:光标移到当前行的第一个非空字符
g_
:光标移到当前行的最后一个非空字符
b
:光标到上一个字的开头
w
:光标到下一个字的开头
e
:光标移到下一个字的结尾
ge
:光标移到上一个字的结尾
fa
:移到下一个a出现的位置('F’与之相反)
ta
:移到下一个a出现位置的前一个位置(‘T’与之相反) - 行间移动
G
:光标移至文末
gg
:光标移至开头
Ngg
或NG
:光标移至N行开头 - 语义移动
(
:光标移至上一句首
)
:光标移至下一句首
{
:光标移至段首
}
:光标移至段尾 - 屏幕移动
H
:将光标移到屏幕的最顶行
M
:将光标移到屏幕中间
L
:将光标移到屏幕最底行
Ctrl+b:向上翻页
Ctrl+f:向下翻页
2. 选择
此功能需进入可视模式,方法为按下键盘上的v键。然后搭配上面移动的想关命令即可实现文本的选择。读者可自行探索使用技巧,如ggvG
可实现全选,v$
可实现选中某行等。
补充:使用Ctrl+v可进入可视块模式,允许垂直方向选择文本。
3. 复制
y
:复制(可与移动命令搭配使用,自行探索,如yw
可复制光标至词尾的内容)
yy
:复制一行
Nyy
:复制从光标处起的N行内容
yw
:复制光标处至词尾的内容
yaw
:复制光标所在单词
ya"
:yank around ",复制整个字符串包括引号
yi"
:yank inside ",复制引号之间的内容,不包括引号(类似还有yi(
、yi[
等)
4. 粘贴
p(小写)
:在光标后粘贴复制或剪切的内容
P(大写)
:在光标前粘贴复制或剪切的内容
5. 删除(剪切)
x
:删除光标所在字符(cut)
d
:删除(可与移动命令搭配使用,自行探索)
dd
:删除光标所在行
D
:从光标处删至行尾(与d0
等同)
dw
:删除光标至词尾的内容
daw
:删除光标所在单词
6. 撤销
u
:撤销上次命令(undo)
7. 恢复
Ctrl+r:恢复撤销的命令(redo)
8. 查找
/str
:查找字符串str第一次出现的位置
n
:当查找到指定内容后,继续查找下一个
N
:查找上一个
*
:向后查找当前光标所在单词
#
:向前查找当前光标所在单词
fa
:向后查找第一个a出现的位置
;
重复上一次f查找命令
9. 替换(修改)
r
:替换光标所在字符
R
:此时将进入替换模式,每输入一个字符就会替换光标所在字符,并使光标后移一格,以便继续替换。
s
:删除当前字符并插入
cw
: 替换从光标所在位置到当前单词结尾的字符
caw
:删除光标所在单词并插入
ci"
:删除“…”之间的内容并插入(类似还有ci(
、ci[
等)
.
:重复上一次修改命令
".
:跳转到上次修改所在行
`.:跳转到上次修改所在位置
更多查找替换的命令可参见本文最后推荐阅读部分。
10. 缩进
>>
:增加缩进
<<
:减少缩进
gg=G
:自动全文缩进
11. 标记
mx
:添加标记x,x可以是a~z或A~Z之间的任意字母
'x
:定位到标记x所在行行首
`x:定位到标记的确切位置
12. 查看历史
q:
:查看历史命令
q/
:查看搜索历史
补充:查看或编辑某条记录后按Enter可执行该条记录。按Ctrl+c可退出历史编辑
13. 进入插入模式
i
:在当前字符前插入文本
I
:在行首插入文本
a
:在当前字符后插入文本
A
:在行尾插入文本
o
:在当前行后面插入空行
O
:在当前行前面插入空行
14. 进入底行模式
Shift+:可进入底行模式
-
常用
w filename
:保存或重命名当前文件
wq
:保存退出
saveas <path/to/file>
:另存为指定路径下文件
e <path/to/file>
:打开路径下的文件
q
:在未做修改的情况下退出
q!
:不保存退出 -
行相关
N
:跳至第N行
set nu
:显示行号(nu即number)
set nonu
:隐藏行号(nonu即no number)
J
:拼接当前行和下一行
set ts=N
:设置Tab键跳过的空格数为N(ts即tabstop) -
基本排版
ce(nter)
:本行文字居中
le(ft)
:本行文字左对齐
ri(ght)
:本行文字右对齐 -
标签页
tabnew filename
:新建标签页
tabn
:跳到下个标签页
tabp
:跳到上个标签页
tabc
:关闭当前标签页 -
分屏
sp
:左右分屏
vsp
:上下分屏
补充:可使用Ctrl+w+w实现不同窗口的转动切换,方向为逆时针旋转;也可使用Ctrl+w搭配h、i、j、k或方向键实现窗口切换。
15. 其他tips
- 复制、粘贴、剪切快捷键
Ctrl+Insert:复制
Shift+Insert:粘贴
Shift+delete:剪切
虽然windows下的复制、粘贴、剪切三件套在Linux有些场合也能用,但是当它们行不通的时候,可要记住上面三个哦! - 自动补全快捷键:Ctrl+n或Ctrl+p
- 数字自增(减)1
Ctrl+a:使光标所在处的数字加1
Ctrl+x:使光标所在处的数字减1 .
:重复上次命令~
:对光标下的字母大小写转换N<Cmd>
:重复Cmd命令N次.此命令很重要,可与复制、删除以及其他很多命令搭配使用,大家可自行探索。qa<Command>q
:宏录制,@a可执行上述录制的Command命令.具体参见文末推荐阅读部分。!shell_command
:不必退出vim,执行shell_command命令,执行完后返回到vim界面
参考文章:
1.看完这篇文章,你的Linux基础就差不多了
2.Vim入门基础
3.简明 VIM 练级攻略
4.Linux vi/vim
推荐阅读:
1.高效率编辑器 Vim——操作篇,非常适合 Vim 新手
2.vim键位图
3.Vim Cookbook
4.Vim寄存器
5.Vim 中的宏命令
6.正则表达式30分钟入门教程
7.在 Vim 中优雅地查找和替换