以下命令均在Normal模式下执行,如不确定当前模式,按下<ESC>
回到Normal模式。
使用ESC
撤销一个不想输入或部分完整的命令。
VIM的进入和退出
进入Vim编辑器(从命令行提示符):vim filename
退出Vim编辑器:<ESC>
:q!
(放弃所有改动)
或者:<ESC>
:wq
(保存改动)
移动光标
↑
k
←h l→(小写L)
j
↓
撤销
u
:撤销最后执行的命令
U
:撤销对整行的修改
Ctrl
+ R
:撤销之前的撤销命令
删除类命令
删除光标所在位置字符:x
d motion
d – 删除操作符
motion --操作符的操作对象
一个简短的动作列表:
w – 从当前光标位置至下一个单词的起始处,不包括第一个字符
e – 从当前光标位置至单词末尾,包括最后一个字符
$ – 从当前光标位置至当前行末
dd
:删除当前行
使用计数指定动作
在动作前输入数字n会使它重复n次
operator [number] motion
例如:
2w
:光标向前移动两个单词
3e
:光标向前移动到第三个单词末尾
0
:光标移至当前行行首
2dd
:删除当前行开始的两行
置入类命令
i
:在光标前插入文本
a
:在光标后插入文本
A
:在行末添加文本
y
:复制文本
yw
:复制光标处至词末
p
:粘贴文本于光标之后。如果文本是一整行,则至于当前行的下一行
o
:在光标下方打开新的一行
O
:在光标上方打开新的一行
替换类命令
r char
:将光标所在位置字符替换为char
r – 替换操作符
char – 要替换的字符
R
:连续替换多个字符
更改类命令
c [number] motion
动作参数同删除类命令。
定位及文件状态
Ctrl
+g
:显示当前光标所在行位置和当前文件状态信息
G
:跳转到文件最后一行
gg
:跳转到文件第一行
nG
:跳转到第n行
0
:移动光标到行首
$
:移动光标到行末
e
:光标移动到单词末尾
b
:光标移动到词首
w
:光标移动到下一个单词词首
搜索类命令
/string
:向前查找string字符串
/string\c
:仅在一次查找时忽略大小写
?string
:向后查找string字符串
n
:同一方向上查找上一次的字符串
N
:相反方向查找上一次的字符串
Ctrl
+O
:回退到之前位置,可通过重复按回退多步
Ctrl
+I
:(大写i)跳转到较新的位置
:set ic
(or :set ignorecase
):ignore case,搜索时设置忽略大小写
:set noic
(or :set noignorecase
):禁用忽略大小写
:set is
(or :set incsearch
):查找字符串时显示部分匹配
:set nois
(or :set noincsearch
):禁用显示部分匹配
set hls
(or :set hlsearch
):highlight,匹配项高亮显示
:nohlsearch
(or :nohls
):取消高亮
配对括号查找
%
:配对括号(用于查找不配对的括号),光标应停留在"(“、”[“、”{“、”)“、”]“、”}"处
替换命令
:s/old/new
:替换当前行第一个出现的old
字符串为new
:s/old/new/g
:替换该行中所有的old
字符串为new
:#,#s/old/new/g
:替换若干行中所有old
字符串为new
,#
为首尾两行的行号
:%s/old/new/g
:替换文件中每一个匹配串
%s/old/new/gc
:替换文件中每一个匹配串,并对每一个匹配串提示是否进行替换
在VIM内部执行外部命令
:!cmd
:执行外部shell命令,cmd
为命令名称
:w newfile
: 保存当前文件到newfile文件中
v
motionoperator
:按v
进入可视模式,选择若干行进行操作
:r file
:在光标处插入file文件中的内容,file也可以是外部命令的输出(如::r !ls
)
批量缩进
:a,b>
:从第 a 行到第 b 行向右缩进
:a,b<
:从第 a 行到第 b 行向左缩进
比如:
:10,21>
表示第 10 行到第 21 行向右缩进
拖延是病(つД`)ノ