VIM 快捷学习

一 关于ctags
     vim自带ctag插件
     在工程当前目录shell 运行 $ctags -R  会在当前目录递归生成一个tags文件
     在vim 中运行  :set tags=tags   //表示指定当前目录tags文件为读取文件

     在vim中运行 :version  可以看到很多关于vim本身的信息 如图:


 

   上图说明了vim读取vimrc配置文件的顺序,打开vim将按照上述顺序查找用户vimrc,并执行所找到的第一个用户vimrc中的命令,忽略其余的用户vimrc。在vimrc中实际上是按先后顺序执行的

     如果使用”vim -u filename“命令来启动vim,则会用你指定的filename作为vim的配置文件(在调试你的vimrc时有用);

    如果用”vim -u NORC“命令启动vim,则不读取任何vimrc文件:当你怀疑你的vimrc配置有问题时,可以用这种方式跳过vimrc的执行。


     查看tags文件可知文件对各个文件中的函数和变量等进行了定位。如果没有则找不到

     使用ctags:

     ctrl+]   跳转到指定的函数

     ctrl+t   和ctrl+]命令相反  

     :tags 可显示跳转深度具体信息 如下图:

二 vim 快捷键

“:tag func_name“ 跳到函数func_name处。使用tag命令时,可以使用TAB键进行匹配查找,继续按TAB键向下切换。

 vim 快捷键:
 %    跳到匹配的括号处("{ }""[]""()")也可以匹配if else 等
 ctrl+i, tab  跳到下一个跳点

 ctrl+o  跳到上一个跳点
 #  从光标向后查找整个关键词 (精确完全匹配查找)
 g# 可以查找到包含它的单词
 *只查找与当前单词精确匹配的单词
 g*查找包含当前单词的所有单词

    


w 跳到下一个单词的开始
e 跳到单词的结束
b 向后跳


r:替换光标所在处的字符。
R:替换光标所到之处的字符,直到按下「ESC」键为止。

「ctrl」+「g」列出光标所在位置 行列


“.”  重复上一次修改
ctrl+r和u相反的动作
y  复制 
yy  复制一行
gf跳转到文件(gf将一个字符串当做一个文件在当前文件夹下递归查找)


Visual Mode操作:
 ctrl+v     进入基于块的可视模式 
v           进入基于字符的可视模式
V          进入基于行的可视模式
c           删除选定的块

ctrl+z  睡眠vim   
fg num 反操作 返回vim

fx:向后查找,移动光标到当前行的下一个x处。很明显,x可以是任意一个字母,可以使用“;”来重复上

一个f命令
tx:和上面的命令类似,但是是移动到x的左边一个位置。
Fx:和fx类似,不过是往回找。
Tx: 同上 
(小写向后,大写向前)


0: 移动光标到当前行首。
^:移动光标到当前行的第一个字母位置。
$: 移动光标到行尾。
):移动光标到下一个句子。
( : 移动光标到上一个句子。

ma:在当前光标的位置标记一个书签,名字为a。书签名只能是小写字母。你看不见书签的存在,但它确实

已经在那里了。
`a:到书签a处。注意这个不是单引号,它一般位于大部分键盘的1的左边。
`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。

i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
c{motion}:删除motion命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的

字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被

删除的字符被存在了剪贴板里面,并且可以再粘贴出来。
d{motion}:和上面差不多,但是不进入插入模式。
(c和d用法相似,但会进出插入模式)

 


VIM是一个绝好的编辑器来写代码,因为它有一些特性是专门为程序员而设。
这里是一些常用的:
]p:和p的功能差不多,但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置。
试一下!%:匹配花括号,方括号,括号等。在一个括号的上面,然后按%,鼠标就会出现在匹配的另外一

半括号处。
>>:缩进所有选择的代码
<<:和上面类似,但是反缩进
gd:到达光标所在处函数或者变量的定义处。会查找出很多个但是跳转到局部变量的定义处
K:在Man里面查找光标当前所在处的词。

不用ctags的函数跳转(也是字符串查找)
[+ctrl+i 跳转到函数、变量和#define
[+ctrl+d 跳转到#define处
ctrl+i 向前跳到前几次光标位置
ctrl+o 向后跳到后几次光标位置

 

[[ 用来跳到光标前面的一个函数开始处。如果光标在函数体内的话,那就是所在函数的开始处。
][ 用来跳到光标后面的一个函数结尾处。如果光标在函数体内的话,那就是所在函数的结尾处。
]] 用来跳到光标后面的一个函数开始处。如果光标在函数体内的话,那就是下一个函数的开始处。
[] 用来跳到光标前面的一个函数结尾处。如果光标在函数体内的话,那就是上一个函数的结尾处。

1,先想是想往前跳,还是往后跳?
如果是想往前,就摁 [,如果是想往后,就摁 ],然后指头别松开。
2,再想是想到开始处,还是结尾处?
如果是开始处,就再摁一下。如果是结尾处,就摁另一个键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值