vim命令大全

vim是什么

vim是Linux环境下一款功能强大、高度可定制的文本编辑工具,类似于Windows下面的source insight、sublime、notepad。VI是visual interface的缩写,即可视化接口。vim 即 vi IMproved,在 vi 的基础上做了很多改进,如:增加了多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等功能

vim的工作模式

vim一般有6种工作模式:

  • 普通模式(normal模式):使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作
  • 插入模式(insert模式):也可以叫做编辑模式,在普通模式下敲击 i 、a 或 o 就进入插入模式,允许用户通过键盘输入、编辑
  • 命令行模式:在普通模式下,先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了,如改变颜色主题、显示行号等,这些配置命令也可以保存到/etc/vim/vimrc配置文件中,每次打开默认配置执行
  • 可视化模式:在普通模式下敲击前盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作
  • 替换模式:如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击R键就可以直接替换
  • EX模式:类似于命令行模式,可以一次运行多个命令
    vim的各种工作模式可以通过不同的键进行切换,默认使用ESC键返回到普通模式

操作命令

光标移动命令
单个字符移动:
h  向左移动
l  向右移动
j  向下移动
k  向上移动
xh  向左移动x个字符距离

单词移动:
w  将光标移动到下一个单词的开头
b  将光标移动到前一个单词的开头
e  将光标移动到下一个单词的词末
E  移动到单词的结尾(忽略标点符号)
ge  将光标移动到上一个单词的词末
2w  将光标移动到下两个单词的开头

行移动:
$  将光标移动到当前行的行尾
0  将光标移动到当前行的行首
^  将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置)
2|  移到当前行的第2列
fx  在当前行上将光标移动到右侧第1个x字符上
3fx  在当前行上将光标移动到右侧第3个x字符上
tx  在当前行上将光标移动到右侧第1个x字符的前一个字符上
3tx  在当前行上将光标移动到右侧第3个x字符的前一个字符上
fx和tx可以通过`;`和`,`进行多次操作。`;`表示向右移动,`,`表示向左移动
%  用于符号间的移动,它会在一对()、[]、{}之间跳跃

文本块移动:
(  移到当前句子的开头
)  移到下一个句子的开头
{  移到当前一段的开头
}  移到下一段的开头
[[  移到当前这一节的开头
]]  移到下一节的开头

在屏幕中移动:
G  跳转到文件末尾
xG  跳转到第x行
''(2次单引号)  返回到跳转前的位置
gg  移动到文件开头
m%  移动到文件m%的位置
H  移动到一屏的开头
M  移动到一屏的中间
L  移动到一屏的末尾
ctrl+G  查看当前的位置状态
滚屏与跳转
滚屏:
ctrl+u  向上半屏滚动
ctrl+d  向下半屏滚动
ctrl+b  向上全屏滚动
ctrl+f  向下全屏滚动

定位光标的位置:
zz  将光标置于屏幕的中间,所在行不变
zt  将光标置于屏幕的顶部,所在行不变
zb  将光标置于屏幕的底部,所在行不变

设置跳转标记:
mx、my、mz  标记三个位置
'x、'y、'z  跳转到标记的位置(符号为单引号)
文本插入操作
i  在当前光标的前面插入字符
a  在当前光标的后面追加字符
o  在当前光标的下一行行首插入字符
O  在当前光标的上一行行首插入字符
I  在一行的开头添加文本
A  在一行的结尾处添加文本
s  删除当前光标处的字符并进入到插入模式
S  删除光标所在处的行,并进入到插入模式
u  撤销修改
文本删除操作
字符删除
x  删除当前光标所在处的字符
X  删除当前光标左边的字符

单词删除
dw  删除一个单词(从光标处到空格,包括空格)
daw  删除光标所在的整个单词(包括空白字符)
diw  删除整个单词文本,但是保留空格字符不删除
d2w  删除从当前光标开始向后的2个单词
d2aw  删除从当前光标开始向后的2个完整单词
d$  删除从光标到一行末尾的所有内容,效果同`D`
d0  删除从光标到一行开头的所有内容
dl  删除当前光标处的字符,效果同`x`
dh  删除当前光标前面的字符,效果同`X`

行删除
dd  删除当前光标处的一整行内容
5dd  删除从光标所在行开始的5行代码
dgg  删除从光标所在行向上到文本开头的内容
dG  删除从光标所在行向下到文本结尾的内容

行合并
J  删除光标所在行末尾的分行符,将当前行与下一行合并
文本复制与粘贴
复制与粘贴:
y  复制
p  在光标后面或下一行粘贴
yw  复制当前单词从光标处到末尾的内容,包括空格
yaw  复制光标当前所在的整个单词,包括空格
y2w  复制当前单词从光标处到末尾的内容和下一个单词,即复制2个单词
y2aw  复制光标当前所在的整个单词和下一个单词,即复制2个完整的单词
y$  复制从当前光标到行结尾的所有单词
y0  复制从当前光标到行首的所有单词
yy  复制一整行
2yy  复制从当前光标所在行开始的2行

复制文本块:
    1.首先进入visual模式:v
    2.移动光标选择文本
    3.复制与粘贴的操作

ggvG  全选,到开头后进入visual模式,再跳转到末尾

调整文本缩进:
在visual模式下,选择需要调整的代码后,
shift + >  向后缩进
shift + <  向前缩进
文本的修改与替换
cw  删除从光标处到单词结尾的文本并进入到插入模式
cb  删除从光标处到单词开头的文本并进入到插入模式
cc  删除一整行并进入到插入模式,效果同`S`
~  修改光标下字符的大小写
rx  将当前光标下的字符替换为x
R  进入到替换模式
xp  交换光标下的字符和下一个字符的位置
文本的查找与替换
查找:
/string  向后查找
?string  向前查找
使用enter确认查找后,按下n浏览下一个查找结果
:set hls  设置高亮显示
:noh  关闭当前的高亮结果

替换:
:s/old/new  将当前行的第一个old替换为new
:s/old/new/g  将当前行所有的old替换为new
:5s/old/new  将第5行第一个old替换为new
:5s/old/new/g  将第5行的所有old替换为new
:7,8s/old/new  将指定的7、8行内的第1个old替换为new
:7,8s/old/new/g  将指定的7、8行内的所有old替换为new
:%s/old/new  将文本中所有行的第1个old替换为new
:%s/old/new/g  将文本中所有的old替换为new
:%s/old/new/gc  依次将old替换为new
:%s/^struct/int/g  将所有以struct开头的字符串替换为int
撤销修改、重做与保存
u  撤销上一步的操作
Ctrl+r  将原来的插销重做一遍
:U  恢复一整行原来的面貌(文件打开时的文本状态)
:q  若文件没有修改,直接退出
:q!  文件已经被修改,放弃修改退出
:wq  文件已经被修改,保存修改并退出
:e!  放弃修改,重新回到文件打开时的状态
编辑多个文件
文件和缓冲区的区别:
文件是保存在磁盘上的,而打开的文件的文件是在内存中,在内存中有一个缓冲区,用来存放打开的文件。vim每次打开文件时都会创建一个缓冲区,vim支持打开多个文件

:buffers  查看缓冲区列表效果同`ls`
:buffer N  根据缓冲区列表的编号跳转到指定缓冲区
:bnext/bprev  遍历缓冲区列表
:bfirst/blast  分别调到缓冲区列表的开头和结尾
:write  将缓冲区的修改保存到磁盘上
:edit! e!  放弃缓冲区的修改,恢复到文件打开时的状态
:edit file  编辑另一个文件
:wnext  保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件
:set autowrite
标签页与折叠栏
标签页:
标签页的新建  tabedit file/tab split
标签页的切换  tabn/tabp
按键  gt/gT
标签页的关闭  tabclose 
关闭当前的标签页  tabonly

折叠栏:
创建折叠
    zf200G  将光标和200行之间的代码折叠起来
折叠的打开与关闭
    za  打开和关闭折叠
    zr/zm  一层一层地打开和关闭折叠
    zR/zM  分别打开和关闭所有的折叠
折叠键的光标移动
    zj  跳转到下一个折叠处
    zk  跳转到上一个折叠处
删除折叠
    zd  删除光标下的折叠
    zD  删除光标下的折叠以及嵌套的折叠
    zE  删除所有的折叠标签
    创建的折叠当退出vim之后就失效了
多窗口操作
分割窗口
    split/vsplit filename
窗口间跳转
    ctrl+w hjkl
    ctrl+w w
移动窗口
    ctrl+w HJKL
调整窗口尺寸
    ctrl+w +/-  调整窗口的高度
    ctrl+w </>  调整窗口的宽度
    ctrl+w =  所有的窗口设置相同的尺寸
    :resize n  将当前窗口尺寸调整为N行
关闭窗口
    close  关闭一个窗口
    qall  退出所有窗口
    qall!  放弃修改,退出所有窗口
    wqall  保存并退出所有窗口
    wall  保存所有窗口
VSCodeVim的命令

官方文档:https://github.com/VSCodeVim/Vim

vim-easymotion:
<leader><leader> s <char>  为字符char做标记,方便跳转

vim-surround:
ds <existing char>  删除两边的成对的符号,如:()、[]、{}、''、""
cs <existing char><desired char>  将成对的符号替换为另一种

vim-sneak:
s <char><char>  向后跳转到<char><char>字符所在的位置
S <char><char>  向前跳转到<char><char>字符所在的位置

VSCodeVim tricks:
gd  跳转到函数的源代码处
Ctrl+o  返回函数的使用处
gh  悬浮显示函数的说明文档

切换文件:
gt  向后切换打开的文件
gT  向前切换打开的文件

vim键盘图

在这里插入图片描述

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值