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
 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部