简介
在终端输入 vim <filename>
对文本进行编辑
注意终端下方,连按ESC
就进入普通模式(normal mode),再按i
进入插入模式(insert mode)
在插入模式下,就可以开始打字输入了,用方向键控制光标,或用鼠标控制光标,通过左右键进行复制粘贴,通过backspace
与 delete
进行删除。
按ESC
进入普通模式,输入 :w
, 注意终端下方,按回车即可保存(write)
按ESC
进入普通模式,输入:wq
,注意终端下方,按回车即可保存并退出(write and quit)
而按ESC
进入普通模式,输入:q!
,再按回车即可不保存强制退出
vimtutor
下面的知识,在终端输入vimtutor
即可学习,一般1个小时就可以学完。
如果想熟悉使用光标定位符h,j,k,l,e,w,b
,可以玩这个网页游戏 或者这个在线教程
插入模式下
按ESC
进入普通模式
可以用方向键进行光标控制,Backspace
与delete
进行删除,鼠标右键进行粘贴(或者终端复制快捷键)。
普通模式下
- 切换至插入模式
i insert的简写,在光标前插入
a append的简写,在光标后添加
A Append的简写,在行尾添加
o 在光标下插入一行
O 在光标上插入一行
- 光标移动
h 左
j 下
k 上
l 右
$ 行尾,$也是各种正则表达式表示末尾的定位符
0
与^
行首
G 文本尾
gg 文本首(打游戏中常用gg,暗示下一局,从零开始)
e end简写,单词尾
w
与W
word简写,单词首
b
与B
before的简写,上个单词首
ctrl+g 显示当前文件信息: 文件名,多少行,百分比位置
123G 跳转到123行
ctrl+i 恢复到历史之前的位置,在用完123G 之后,可以用ctrl+i 跳转回来
ctrl+o 恢复到历史之后的位置,在用完ctrl+i之后,可以用ctrl+o又跳转回来
- 查找
:/findstr 从光标处向后查找findstr
:?findstr 从光标处向前查找findstr
n next,进行查找操作后,查找下一个
N 进行查找操作后,查找上一个
- 替换
:s
/old/new substitute的简写,进行一次替换
:s
/old/new/g 进行一行的替换
:%s/old/new/g 进行全文的替换
:%s/old/new/gc 进行全文的替换并先确认
R replace简写,进入替换模式,进行单个字母替换; eg: night 经过 Rhello 将变成hello
r 进行一次单个字母替换 eg: night 经过rh 将变成 right
- 删除
x 删除一个字符
dw delete 简写,删除一个单词,删除到下一个单词的开关 eg: hello |good nice 经过dw 变成 hello |nice ,|在这里表示光标位置
d3w 删除三个单词,可与各种数字,光标定位符(w,e,b,0,$),组合产生奇妙的化学反应
dd 删除一行
d5d 删除五行
de 删除一个单词,删除到这个单词的末尾 eg: hello |good nice 经过de 变成 hello | nice ,|在这里表示光标位置
d3e 删除三个单词
d$ 删除到行尾
d0 删除到行首
cw 删除一个单词,并进入插入模式,c与d一样,可与各种数字,光标定位符产生奇妙的化学反应
cc 删除一行并进入插入模式
- 恢复
u undo的简写,恢复一个命令
U 恢复一行,vimtutor 原文是fix a whole line,实测是不断切换一行在编辑前后的状态
ctrl+R 撤销恢复操作
- 复制粘贴
v visual 进入选择模式(一般叫做视图模式,因为vim下方会显示 Visual),再按h,j,k,l进行选择区域改变,然后按y就可以复制选定区域
p paste, 复制到光标的后面
P 复制到光标的前面
yy yank 复制当前行,可与各种光标定位符和数字产生奇妙的化学反应
y3y 复制当前3行,可以发现,vim对数字的支持很到位,可进行推理,会恢复,用错了也没事
"*p 复制系统缓冲区的内容
"+p 复制在其它程序中的复制内容,即系统粘贴板的内容
-设置
:set hls 设置查找时的高亮显示
:set nohls 设置查找时的无高亮显示
:!xxx 调用系统命令xxx
- 保存退出
:w 保存
:wq 保存并退出
:q 退出
:q! 不保存,强行退出
vim 进阶
在正常模式下输入 :help
-
切换模式
ESC
进入普通模式i
进入插入模式:
进入最后一行模式v
或V
进入选择模式:ter
打开终端(terminal)
-
导航
h,j,k,l,0,$,^,w,W,b,B,e,E,gg,G
ctrl+g, ctrl+i, ctrl+o, ctrl+j, ctrl+p
%,fx,tx,Fx,Tx
匹配跳转,%匹配[({
,fx
匹配字符x
(,),{,},[[,]],[],][
区域跳转,{}
上下段,
H,M,L
相对屏幕顶端、中部与底部 -
导入
:r [filename]
在光标后导入文件内容
:r ![command]
在光标后导入命令输出 -
匹配删除
d
+),},gg,G,0,$,w
等 但d]
不能匹配删除 -
多个粘贴板
["x]yy
如"2yy
,把当前行复制到2号粘贴板
["x]p
如"5p
,把5号粘贴板的内容复制到当前行下
"*p
复制系统缓冲区的内容
"+p
复制在其它程序中的复制内容,即系统粘贴板的内容 -
书签
m {a-z A-Z}
设置书签
:marks
列出书签
`{a-z A-Z}
跳转到书签
`"
跳转到最后一次编辑的位置
`.
跳转到最后一次改变的位置
`0
跳转到上次退出的位置 -
被选择文字修改
~
更改大小写
>
与<
左右移动
!
通过外部命令过滤 -
保存
:w new_name
用new_name保存
:save file_name
另存为file_name
:w !sudo tee %
采用sudo进行保存 -
标签与命令
:tabnew filename
在新标签页打开文件
:tabn[ext], tabp[revious]
或者gt, gT
进行标签切换
tabfirst, tablast
跳到第一个或最后一个标签
:tabc[lose]
关闭当前标签
:ju[mps]
列出所有跳转
:changes
列出所有改变
:set nu
显示行号
:set hls
高亮显示搜索结果
:set ru
显示光标的行列位置 -
窗口
ctrl + w + s/v
水平或垂直划分窗口
ctrl + w + h/j/k/l
上下左右选择窗口