vim模式及命令
vim的四种模式
- 正常模式(normal-mode):不能对文本直接编辑,可使用快捷键进行增删改查(打开后的默认模式)
- 插入模式(insert-mode):可直接对文本进行编辑(普通模式下输入i进入输入模式)
- 命令模式(command-mode):在末行输入命令进行操作
- 可视模式(visual-mode)
对于初学者,安装后建议运行vimtutor
进入官方文档,如果是不是中文可运行vimtuor zh
,先根据文档进行练习
vim四种模式的切换
-
普通模式
在任何模式下,只要按下 Esc 键就可以返回普通模式。 -
普通模式进入插入模式(插入模式则类似于记事本)
i # 在光标所在字符前开始输入文字并进入插入模式
a # 在光标所在字符后开始输入文字并进入插入模式
o # 在光标所在行的下面单独开一新行来输入文字并进入插入模式
s # 删除光标所在的字符并进入插入模式
I # 在行首开始输入文字并进入插入模式
A # 在行尾开始输入文字并进入插入模式
O # 在光标所在行的上面单独开一新行来输入文字并进入插入模式。
S # 删除光标所在行并进入插入模式
c[n]w # 改写光标后1(n)个词。
c[n]l # 改写光标后n个字母。
c[n]h # 改写光标前n个字母。
[n]cc # 修改当前[n]行。
[n]s # 以输入的文本替代光标之后1(n)个字符,相当于c[n]l。
[n]S # 删除指定数目的行,并以所输入文本代替之。
- 进入可视模式(可视模式相当于高亮选取文本后的普通模式)
- 普通模式 按键 v 进入Vim字符选择可视化模式
- 普通模式Ctrl + v进入块选择模式
vis # 选中一个句子
vib # 选中一个block
viw # 选中一个单词
vip # 选中一个段落
va{ # 选中{}中间内容,包括{}
vi( # 选中()中间内容
vi{ # 选中{}中间的内容,不包括{}
vi< # 选中<>中间内容
vi[ # 选中[]中间内容
vi” # 选中”"中间内容
vi’ # 选中”中间的内容
- 命令模式
- 正常模式输入:进入命令模式
:q # 离开vim
:q! # 退出不保存
:wq # 保存后退出
:w # 保存编辑的内容
:w! # 强制写入该文件
操作文件
vim filename # 用vim打开指定文件夹
vim -r filename # 恢复上次异常退出的文件
vim -R filename # 以只读的方式打开文件,但可以强制保存
vim -M file # 以只读的方式打开文件,不可以强制保存
移动
- 可配合number使用,3j (下移三行),3w(后移三个单词)
h或退格 # 左移一个字符;
l或空格 # 右移一个字符;
j # 下移一行;
k: # 上移一行;
- # 把光标移至上一行第一个非空白字符。
w/W # 移动到下一个word/WORD的开头(WORD表示不包含单词相邻的标点)
e/E # 移动到下一个word/WORD的结尾
b/B # 回到上一个word/WORD的开头
ge/gE # 回到上一个word/WORD的开头
( # 前移1句。
) # 后移1句。
{ # 前移1段。
} # 后移1段。
fc # 把光标移到同一行的下一个c字符处
Fc # 把光标移到同一行的上一个c字符处
tc # 把光标移到同一行的下一个c字符前
Tc # 把光标移到同一行的上一个c字符后
- 不可配合number使用
0 # 移动当前行开头
^ # 移动到当前行第一个非空白字符
$ # 移动到当前行行尾
g # 移动光标所在屏幕行行尾
gg/G # 移动到文件开头/结尾: 把光标移到递n列上。
nG #到文件第n行
:[n]<cr> # 移动到第n行<cr>为回车
:$<cr> # 移动到最后一行。
H # 把光标移到屏幕最顶端一行
M # 把光标移到屏幕中间一行
L # 把光标移到屏幕最底端一行
gi # 快速回到上次编辑的地方
zz # 将当前行移动到屏幕中央
zt #将当前行移动到屏幕顶端
zb # 将当前行移动到屏幕底端
m{a-z} # 标记光标所在位置,局部标记,只用于当前文件
m{A-Z} # 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。
`{a-z} # 移动到标记位置。
‘{a-z}: # 移动到标记行的行首。
:marks # 显示所有标记。
:delmarks a b # 删除标记a和b。
:delmarks a-c # 删除标记a、b和c。
:delmarks a c-f # 删除标记a、c、d、e、f。
:delmarks! # 删除当前缓冲区的所有标记。
复制粘贴
yy/Y # 复制当前行
p # 粘贴
3yy # 复制当前行向下的3行
dd # 删除
3dd # 删除当前行向下的5行
y # 复制在可视模式下选中的文本。
[n]x # 剪切光标右边n个字符,相当于d[n]l。
[n]X # 剪切光标左边n个字符,相当于d[n]h。
y[n]w # 复制n个词。
y[n]l # 复制光标右边n个字符。
y[n]h # 复制光标左边1(n)个字符。
d[n]w # 删除(剪切)1(n)个单词
d[n]l # 删除(剪切)光标右边n个字符。
d[n]h # 删除(剪切)光标左边n个字符。
d0 # 删除(剪切)当前位置到行首的内容
[n] dd # 删除(剪切)n行。
:m,nd<cr> # 剪切m行到n行的内容。
dgg # 剪切光标以上的所有行。
dG: # 剪切光标以下的所有行。
daw和das # 剪切一个词和剪切一个句子,即使光标不在词首和句首也没关系。
p: 在光标之后粘贴。
P: 在光标之前粘贴。
查找替换
/string # 在后面的文本中查找string
?string # 在前面的文本中查找string
n # 向后查找下一个
N # 向前查找下一个
:s/old/new # 用new替换当前行第一个old
:s/old/new/g # 用new替换当前行所有的old
:n1,n2s/old/new/g # 用new替换文件n1行到n2行所有的old
:%s/old/new/g # 用new替换文件中所有的old。
:%s/^/xxx/g # 在每一行的行首插入xxx,^表示行首
:%s//xxx/g # 在每一行的行尾插入xxx,表示行尾
r # 替换光标处的字符,同样支持汉字。
R # 进入替换模式(依次向后替换),按esc回到正常模式。
分屏浏览
vim -o file1 file2 # 水平分割窗口,同时打开file1和file2
vim -O file1 file2 # 垂直分割窗口,同时打开file1和file2
:sp filename # 水平分割窗口打开文件夹
:vs filename # 垂直分割窗口打开文件夹
:nsp filename # 水平分割出一个n行高的窗口
:nvs filename# 垂直分割出一个n行高的窗口
:qa # 关闭所有窗口,退出vim。
:wa # 保存所有修改过的窗口
ctrl+w # 切换到下一个窗口。或者是ctrl+w w
ctrl+w p # 切换到前一个窗口
ctrl+w t(b) # 切换到最上(下)面的窗口。
ctrl+w H(L,K,J) # 将当前窗口移动到最左(右、上、下)面
ctrl+w T # 将当前的窗口移动到新的标签页上。
ctrl+w + # 当前窗口增高一行。也可以用n增高n行。
ctrl+w - # 当前窗口减小一行。也可以用n减小n行。
ctrl+w _ # 当前窗口扩展到尽可能的大。也可以用n设定行数。
:resize n # 当前窗口n行高。
ctrl+w = # 所有窗口同样高度。
n ctrl+w _ # 当前窗口的高度设定为n行。
ctrl+w < # 当前窗口减少一列。也可以用n减少n列。
ctrl+w > # 当前窗口增宽一列。也可以用n增宽n列。
ctrl+w | # –当前窗口尽可能的宽。也可以用n设定列数。
撤销
u # 撤销一次
U # 取消当前行中所有的改动。
[n]u: # 取消n个改动。
:undo 5 # 撤销5个改变。
:undolist # 你的撤销历史。
:earlier 1m # 回到1分钟前
:later 10s # 前进10秒
宏
. #重复上一个编辑动作
qa:# 开始录制宏a(键盘操作记录)
q: # 停止录制
@a:# 播放宏a
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。