VIM高频使用快捷键及命令
快捷键:
到文件头尾:
gg: 跳到文件头;
GG: 跳到文件尾;
滚屏
ctrl+f: 下一屏
ctrl+b: 上一屏
行进退:
0: 跳到行首;
$: 跳到行尾;
光标上次/下次位置:
ctrl+o: 光标上次位置;
ctrl+i: 光标下次位置;
括号左右跳:
%: 跳到匹配括号的另一端;
跳到函数定义处:
ctrl+]: 跳到函数定义处;
ctrl+T: 返回原位置;
代码折叠:
indent折叠命令:
indent方式, vim会自动利用缩进进行折叠, 我们可以使用现成的折叠成果。我们可以在折叠处输入以下命令:
zc 折叠
zC 对所在范围内所有嵌套的折叠点进行折叠
zo 展开折叠
zO 对所在范围内所有嵌套的折叠点展开
[z 到当前打开的折叠的开始处。
]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。
marker折叠命令:
marker折叠方式时, 我们需要用标计来标识代码的折叠, 系统默认是{{{和}}}。折叠命令:
zf 创建折叠, 比如在marker方式下:
zf56G, 创建从当前行起到56行的代码折叠;
10zf或10zf+或zf10↓, 创建从当前行起到后10行的代码折叠。
10zf-或zf10↑, 创建从当前行起到之前10行的代码折叠。
在括号处zf%, 创建从当前行起到对应的匹配的括号上去((), {}, [], <>等)。
zd 删除 (delete) 在光标下的折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zD 循环删除 (Delete) 光标下的折叠, 即嵌套删除折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zE 除去 (Eliminate) 窗口里“所有”的折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
批量注释与反注释
1.多行注释:
1. 首先按esc进入命令行模式下, 按下Ctrl + v, 进入列(也叫区块)模式;
2. 在行首使用上下键选择需要注释的多行;
3. 按下键盘(大写)“I”键, 进入插入模式;
4. 然后输入注释符(“//”、“#”等);
5. 最后按下“Esc”键。
注: 在按下esc键后, 会稍等一会才会出现注释, 不要着急~~时间很短的
2.删除多行注释:
1. 首先按esc进入命令行模式下, 按下Ctrl + v, 进入列模式;
2. 选定要取消注释的多行;
3. 按下“x”或者“d”.
注意: 如果是“//”注释, 那需要执行两次该操作, 如果是“#”注释, 一次即可
搜索
1. /keyword: 搜索keyword
2. :noh: 即:nohlsearch, 取消搜索高亮
3. \gg: 搜索光标下的单词
4. *: 在Normal下, 正向搜索当前光标下的单词
5. #: 在Normal下, 反向搜索当前光标下的单词
6. n: 继续搜索下一个匹配的单词
7. N: 继续搜索上一个匹配的单词
替换
%s/old/new/g 将文件中所有的old模式替换为new
5,15s/old/new/g 只在第5至第15行间进行替换
高亮标记:
1. *: 高亮光标下的单词;
2. :noh: 取消搜索高亮;
删除单词:
1. dw: 删除到下一个单词开头
2. de: 删除到本单词末尾
3. dE: 删除到本单词末尾包括标点在内
4. db: 删除到前一个单词
5. dB: 删除到前一个单词包括标点在内
删除行尾空格:
1. :% s/\s\+$//g
与Windows共享剪贴板:
1. 从win剪贴板粘贴到vim: "+p(冒号+加号+小写p)
2. 从vim放入win剪贴板: "+y(冒号+加号+小写y)
大小写转换:
1. 先选中要转换的文本, 按gU转换为大写
2. 按gu转换为小写
格式化代码:
1. 格式化全文: gg=G
2. 自动缩进当前行: ==
3. 格式化当前光标接下来的10行: 10=
4. 格式化选定的行: v (向上下选择)=
5. 按照特定符号(如=)对齐: 安装Tabular插件, 然后 :Tab /= 即可
Tab与空格互换:
在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:
set ts=4 (注:ts是tabstop的缩写,设TAB宽4个空格)
set expandtab
对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:
TAB替换为空格:
:set ts=4
:set expandtab
:%retab!
空格替换为TAB:
:set ts=4
:set noexpandtab
:%retab!
加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB
保存所有文件:
:wa
删除行尾^M
:%s/^M$//g
(^M注意要用Ctrl+V Ctrl+M来输入)
vim多窗口使用技巧
1、打开多个窗口
打开多个窗口的命令以下几个:
横向切割窗口
:new+窗口名(保存后就是文件名)
:split+窗口名,也可以简写为:sp+窗口名
纵向切割窗口名
:vsplit+窗口名,也可以简写为:vsp+窗口名
2、关闭多窗口
可以用:q!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有使用q!、w!或x才能真能退出。
:tabc 关闭当前窗口
:tabo 关闭所有窗口
3、窗口切换
:ctrl+w+j/k,通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。
4、窗口大小调整
纵向调整
:ctrl+w + 纵向扩大(行数增加)
:ctrl+w - 纵向缩小 (行数减少)
:res(ize) num 例如::res 5,显示行数调整为5行
:res(ize)+num 把当前窗口高度增加num行
:res(ize)-num 把当前窗口高度减少num行
横向调整
:vertical res(ize) num 指定当前窗口为num列
:vertical res(ize)+num 把当前窗口增加num列
:vertical res(ize)-num 把当前窗口减少num列
5、给窗口重命名
:f file
6、vi打开多文件
vi a b c
:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
:e# 回到刚才编辑的文件
7、文件浏览
:Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
:Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
:ls 显示当前buffer情况
8、vi与shell切换
:shell 可以在不关闭vi的情况下切换到shell命令行
:exit 从shell回到vi
9. a.将vim置于后台: 直接按 ctrl + z可以将当前的vim置于后台
b.然后可以去别的目录再打开一个
c.当你需要打开之前的vim的时候,输入jobs命令,看当前有哪些vim在后台
d.最后输入fg + 序号,将需要的vim置于前台
设置缩进
变量名 缩写 含义
(no)smartindent si 基于autoindent的一些改进
tabstop=X ts 编辑时一个TAB字符占多少个空格的位置。
shiftwidth=X sw 使用每层缩进的空格数。
(no)expandtab (no)et 是否将输入的TAB自动展开成空格。开启后要输入TAB,需要Ctrl-V
softtabstop=X sts 方便在开启了et后使用退格(backspace)键,每次退格将删除X个空格
命令:
TlistOpen: 显示函数列表;
Hilight custom highlight
:helptags ~/.vim/doc
:UpdateTypesFile
自定义TagHighLight高亮的对象
找到taghighlight的安装目录,我的是~/.vim/bundle/TagHighlight/plugin/TagHighlight/data,打开kinds.txt里面包含高亮的对象,在不需要的前面加一个#注释掉就可以了。我平时C用的比较多,所以在C语言相关部分里面将member和gobleVar注释掉了。
Keyword
highlight DefinedName ctermfg=61
highlight Enumeration ctermfg=Blue
highlight Statement term=bold cterm=bold ctermfg=124
插件:
1. 参考线: https://github.com/Yggdroot/indentLine
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
