vim进阶使用

一、VIM插件

1.1 索引类插件

1.1.1 Taglist

  1. Taglist如何使用
  2. https://github.com/yegappan/taglist

.vimrc配置

" taglist                                                                                                                                                                                                          
let Tlist_Show_One_File=1     "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow=1   "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Ctags_Cmd="/usr/bin/ctags" "将taglist与ctags关联
let Tlist_WinWidth=40

1.1.2 cscope插件

个人感觉这个比较好用。

参考资料:https://blog.csdn.net/magiclyj/article/details/79660259

1.2 模板类插件

1.2.1 vim-template

二、简单操作

2.1 命令模式

2.1.1 文档操作类

i   进入编辑模式          Esc  进入命令模式     
j k h l  下上左右
a  从下一个位置进入编辑模式
I (shift + i)  定位到行首并进入编辑模式       
A  定位到行尾并进入编辑模式
o  在当前行后插入新行并在新行出进入编辑模式  ==  光标移至行尾,回车+  i 
O  在当前行插入新行并在新行出进入编辑模式  == 光标移至行首,i,回车,上移

u 撤销上一步操作
ctrl + r 反撤销(也就是将u操作恢复回去)

x 删除当前光标的字符
dd  删除当前行(将当前行移入剪贴板)   -->    dd + 移动光标 + p 剪贴当前行到新位置
yy 复制当前行

需要加上冒号的,先输入冒号 ( : ), 然后以回车结尾

w 保存文件
q 退出
q! 退出不保存
x  保存并退出
wq 保存并退出

help + 命令  查询对应命令的帮助文档

2.1.2 多窗口

Ctrl + z 将当前窗口切到后台
Ctrl + p  和 Ctrl + o  打开多个文件后,使用这两个命令来切换下一个或上一个文件
fg         恢复切到后台的程序,与Ctrl + z 组合使用方便调试


先输入冒号( : ) , 以回车结尾
new, vnew + 文件名  纵向/横向打开新文件
e  + 文件名   打开新文件
bd  将当前文件从文件条中移除(不关闭vim)
bd + 文件名  将对应文件从文件条中移除(不关闭vim)
bn 和 bp  打开多个文件后,使用这两个命令来切换下一个或上一个文件

三、中阶操作

3.1 命令模式

3.1.1 移动光标

0   数字0,移动光标到行首

^   到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)

$   到本行行尾

g_  到本行最后一个不是blank字符的位置

3.1.2 文本复制

光标移至33行 + 13 + y + 回车     复制33,45行内容 

光标移至33行 + y + 45 + G         复制33,45行内容

V(或v)  选择33行至45行 + y       复制33,45行内容

p                        从下一行开始粘贴复制的内容

"  [1-9]+-  n y     将n行复制进入第1-9 + 或 - 剪贴板 

"  [1-9]+-  p        将第1-9 + 或 - 剪贴板内容粘贴出来

3.1.3 删除操作

cw      替换从光标所在位置后到一个单词结尾的字符

dw      删除从光标所在位置后到一个单词结尾的字符

3.1.4 文本搜索

/pattern  搜索 pattern 的字符串,按n表示查找下一个,按N表示查找上一个,按回车表示结束搜索

:noh   用于搜索完后取消高亮

3.1.5 另存为

:saveas <path/to/file>  另存为<path/to/file>(路径加文件名)

四、高阶操作

4.1 命令模式

4.1.1 命令重复

.  重复上一次命令
N <command>  重复命令N次

4.1.2 光标移动

NG  将光标定位到第N行

gg  将光标移到第一行

G  将光标移到最后一行

4.1.3 代码自动对齐

M=N  从M行到N行自动对齐,省略M表示从光标处开始

gg=G 从第一行到最后一行自动对齐

4.1.4 单词移动

w 到下一个单词的开头。(单词由字母,数字,下划线组成)

e 到下一个单词的结尾。

W  到下一个单词的开头,该单词包括一些特殊字符。

E   到下一个单词的结尾,该单词包括一些特殊字符。

%  将光标移至括号上,按%  实现匹配括号移动

* 和 #   匹配当前光标所在单词,移动光标到下一个(或上一个)匹配单词。

4.1.5 批量替换

:N,Ms/pattern/pattern2/g       将N至M行的字符串pattern都替换成 字符串 pattern2 

:%s/pattern/pattern2/g          将所有行的字符串pattern都替换成 字符串 pattern2 

:%s/.$//g                                  全文尾部删除1个字符,可以使用上面那个带行号的,进行特定删除

:%s/^.//g                                   全文首部删除1个字符

:%s/\s\+$//g                            删除行尾多余的空格和tab符号, 其中\s\+不能写成\s+

可以将下面代码加入.vimrc中,自动执行

autocmd BufWritePre *.c :%s/\s\+$//e
\s	匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\t	匹配一个制表符。等价于 \x09 和 \cI。
\r	匹配一个回车符。等价于 \x0d 和 \cM。
\n	匹配一个换行符。等价于 \x0a 和 \cJ。

4.1.6 自动提示(自动补齐功能)

Ctrl + n
Ctrl + p

4.1.7 可视化选择

v				 	光标处开始行选
<C-v>        		方块状选取
V                   行选

4.1.8 批量注释

<C-v> + j(或k) + I(大写i) + // + Esc

4.1.9 跳转

<C-o> 回跳

<C-i>  前跳

% 跳转到配对的括号去

[[ 跳转到代码块的开头去

gD 跳转到局部变量定义处

'' 跳转到光标上次停靠的地方,两个''

mx 设置书签, x只能是a-z的26个字母

`x  跳转到书签处,`是1左边的键

> 增加缩进,x> 表示增加以下x行缩进

< 减少缩进,x < 表示减少以下x行缩进

cscope

  • 由于安装有很多地方有了就不重复了。只介绍基本使用技巧和使用心得。

使用技巧

  1. 生成
# 生成 cscope.in.out 	cscope.out	 cscope.po.out
cscope -Rbq

# 打开vim后,添加
cs add ${dir}/cscope.out

# 搜索
cs find c|d|e|f|g|i|s|t name 
可以通过cs find help查看

# 快速查找,将下面的字段加入.vimrc
nmap<C-_>s :cs find s<C-R>=expand("<cword>")<CR><CR>

nmap <C-_>g :cs find g<C-R>=expand("<cword>")<CR><CR>

nmap <C-_>c :cs find c<C-R>=expand("<cword>")<CR><CR>

nmap <C-_>t :cs find t<C-R>=expand("<cword>")<CR><CR>

nmap <C-_>e :cs find e<C-R>=expand("<cword>")<CR><CR>

nmap <C-_>f :cs find f<C-R>=expand("<cfile>")<CR><CR>

nmap <C-_>i :cs find i^<C-R>=expand("<cfile>")<CR>$<CR>

nmap <C-_>d :cs find d<C-R>=expand("<cword>")<CR><CR>

quickfix

#在vim界面
:make

# 在vim界面,可以看到错误地方,并快速跳转
:cw

# 跳转
:cn //切换到下一个结果
:cp //切换到上一个结果

# 快捷键
nmap<F6> :cn<cr>
nmap <F7> :cp<cr>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值