前言:本博客记录本人在工作学习等日常中使用VIM时涉及的一些不熟命令及简略使用方法,本博客仅用于平时翻阅和供大家借鉴使用,如若侵权请联系!【博客会持续更新】
1、vim的三种模式:
1、命令模式:刚启动 vi/vim,便进入了命令模式。
在此状态下,键盘键值动作会被vim识别为命令,而非输入字符;故此模式下只能浏览文件,无法修改文件。
2、输入模式:键盘输入 ’i’ 则进入输入模式,在该模式下可以编辑文件。
Insert:切换光标为输入/替换模式,光标将变成竖线/下划线。
ESC,退出输入模式,切换到命令模式。
3、末行模式:在命令模式下按下 ‘:'(英文冒号)就进入了末行模式。
末行模式可以输入单个或多个字符的命令,按ESC键可随时退出末行模式。
在末行模式中,退出编辑器的基本的命令有:
:q 退出程序
:q! 强制退出不保存
:w 保存文件
:wq 保存退出
:wq! 强行保存退出
注:vimtutor 是vim手册,直接在shell里输入vimtutor后可查看。
2、vim代码段整体左右移动
在.vimrc中添加set shiftwidth=4.(修改
shift移动距离为4个字符的间距)

实现方法:
首先按 Esc,随后输入如下任一命令
:50,80, < 50~80行代码左移4个字符间距
:50,80, > 50~80行代码右移4个字符间距
最后按 Enter
3、vim分割窗口,调整窗口大小
:split 或 :sp 上下分割窗口
:vsplit 或 :vs 左右分割窗口
:q 退出对应窗口
:edit 或 :e + 新文件路径 在分割窗口下打开一个新文件
让光标在不同分屏切换,按Ctrl+w后,按下jkhl去选择要光标移动的方向。
Ctrl W + 窗口扩大
Ctrl W - 窗口缩小
Ctrl W = 把所有窗口调整为相同大小
4、取消搜索高亮
方法一:输入命令 --> :noh
方法二:修改Vim的配置文件 .vimrc,在其中加入以下代码:set nohlsearch
n -> 向下匹配关键字
N -> 向上匹配关键字
5、vim打开文件出现^M问题
在使用VIM时,出现类似如下的^M情况,怎么回事呢?
那是因为windows、linux、os系统的换行符标准不同:
(1) DOS/Windows系统采用CRLF(回车+换行)表示下一行,即“\r\n”;
(2) Linux/UNIX系统采用LF表示下一行,即“\n”;
(3) MAC系统采用CR表示下一行,即“\r”;
解决办法:
在命令终端输入: sed -i 's/^M/\n/g' filename
或
利用vim打开文件,然后输入vim 命令:%s/^M//g,进行全文件查找替换。
注意:^M需要分别通过^(ctrl + v)和 M(ctrl + m)来获取,千万不能通过键盘上的^M输入。
6、vim复制黏贴
在命令模式下,执行复制黏贴命令:
复制命令:输入以下命令可复制当前光标所在字符及其之后的字符。
yl --> 复制1个字母
y2l --> 复制2个字母
ynl --> 复制n个字母
yw --> 复制1个单词
y2w --> 复制2个单词ynw --> 复制n个单词
yy --> 复制1行
y2y --> 复制2行yny --> 复制n行
粘贴命令:
p (小写) ---> 在当前光标之后黏贴
p (小写) ---> 粘贴到下一行
P (大写) ---> 粘贴到上一行
7、vim剪切
在命令模式下,执行剪切命令:
输入以下命令剪切当前光标所在字符及其之后的字符。
cl --> 剪切1个字母
c2l --> 剪切2个字母cnl --> 剪切n个字母
cw --> 剪切1个单词
c2w --> 剪切2个单词cnw --> 剪切n个单词
cc --> 剪切1整行
c2c --> 剪切2整行cnc --> 剪切n整行
注意:剪切后会进入输入模式,需先按ESC退出,然后按p粘贴。
8、vim删除
在命令模式下,执行删除命令:
输入以下命令删除当前光标所在字符及其之后的字符。
dl 或者 x --> 删除1个字母
d2l --> 删除2个字母dnl --> 删除n个字母
dw --> 删除1个单词
d2w --> 删除2个单词dnw --> 删除n个单词
dd --> 删除1行
d2d --> 删除2行dnd --> 删除n行
ndd --> 删除当前行及其后的 n-1 行
D --> 删除光标之后的内容
9、vim光标定位
gg --> 光标移动到文件第一行行首
G --> 光标移动到文件最后一行行首
:数字 --> 光标移动到指定行0 --> 跳到行首
$ --> 跳到行尾
10、vim批量修改字符
:%s/p1/p2/g --> 将文件中的所有p1替换为p2
:%s/p1/p2/gc --> 替换时需要确认
r1,r2s/旧/新/g --> 将r1-r2行的旧替换为新
/字符1/,/字符2/s/旧/新/g --> 将字符1到字符2之间的旧替换为新
11、vim折叠命令
(1)VIM提供6种方法来选定折叠:
1 manual 手工定义折叠
2 indent 更多的缩进表示更高级别的折叠
3 expr 用表达式来定义折叠
4 syntax 用语法高亮来定义折叠
5 diff 对没有更改的文本进行折叠
6 marker 对文中的标志折叠
(2)在.vimrc文件的设置折叠方式
set foldmethod=xxx 或 set fdm=xxx
例子:
set fdm=syntax
(3)此处配置set fdm=syntax来说明折叠命令
za 切换折叠点位置的状态
zc 折叠
zC 对所在范围内全部嵌套的折叠点进行折叠
zM 对全部折叠点进行折叠
zo 展开折叠
zO 对所在范围内全部嵌套的折叠点展开
zR 展开全部折叠
[z 到当前打开的折叠的開始处
]z 到当前打开的折叠的末尾处
zj 向下移动,到达下一个折叠的開始处,关闭的折叠也被计进
zk 向上移动,到前一个折叠的端,关闭的折叠也被计算
12、vim翻页
Ctrl f 向前翻页
Ctrl b 向后翻页
13、内容查找
/pattern 从光标开始处向文件尾搜索pattern
n 向下搜索
N 向上搜索
14、标签操作
:tabe 打开一个新的标签,q退出
:-tabnext 往左边移动打开标签页
:+tabnext 往右边移动打开标签页
15、光标移动
j 光标向上移动
k 光标向下移动
h 光标向左移动
l 光标向右移动
16、可视化块、可视化行
Ctrl + v 可视化块
shift + v 可视化行
在可视化行模式,输入:normal K+你所有行首需要添加的内容,回车就可在首行添加。
在可视化行模式,输入:normal A+你所有行尾需要添加的内容,回车就可在行尾添加。shift + vG 选中文本所有的行。
Ctrl + vG 选中所有行的第一个字符,通过移动左键选择更多的字符。
Ctrl + vG 选中所有行的第一个字符,输入d删除所有行第一个字符,Ctrl + vG选择所有行的第一个字符,然后shift + I进入插入模式,输入你想改的字符,按esc就可以全改了第一个字符。或者,Ctrl + vG 选中所有行的第一个字符,按c,输入想改变的字符,按esc,也可以更改。
17、Ctags相关
Ctrl + ] 跳转到对应的定义
Ctrl + t 返回到上一次跳转的位置
:ts 列出项目中相同定义的跳转列表
g + Ctrl + ] 跳转到定义,并列出相同定义的跳转列表
18、其它命令
. 重复前次操作
u 撤销前次操作
Ctrl + r 恢复前次操作o 在当前行下面新增加一行
w 下个单词首部
e 下个单词尾部
b 上个单词首部
ci{ 光标移到{}内,输入命令即可删除{}内的内容ci} 光标移到{}内,输入命令即可删除{}内的内容
:set numner 显示行号:set nonumber 隐藏行号
.vimrc中:
noremap a b a健改b健
map a b a键改b键
let &t_ut=' ' 防止导致配色异常evinec 在linux中打开一个文件
参考博客:【Linux】vim三种模式的切换、常用命令总结_vim的三种运行模式是什么?如何切换_冰冷的希望的博客-CSDN博客