主要是寄存器操做,简直神器,vim
首先,说用寄存器的命令要知道,C-R (ctrl+r)函数
好比说用a寄存器,就要说按Ctrl+r a 这样子.spa
0-9 a-z (只有小写) 都是vim的寄存器,命令行
其中,1-9 是删除寄存器,分别记录上n次删除的内容,好比,我要复制上5次删除的内容使用 "5p 就能够了,orm
0呢,上一次复制的内容,yy自动存入,字符串
a-z是具名寄存器,好比yy想存入a中,就是用 "ayy 这样子.源码
这些寄存器是能够混用的,table
好比 / 和 ? 我想搜上4次删除的内容,就能够用变量
/<CTRL+R>4 回车,扩展
这样子哦,
输入/"4 只能搜"4这样的字符,这个和vim的配置相关.
但愿可以帮助你们.
在.vimrc 文件中设定 iskeyword 好比,比较烦人的一个地方是c语言的 Struct.Member 若是使用 w * # ] 功能时,没法区分 单词Member,按照Struct.Member是一个单词进行搜索,在.vimrc文件中添加:
set iskeyword += ,$,@,%,#,.,-
一行,这样,就能够了,使用逗号分割每个字符,结尾不能有, .
场景:好比,在A处,有两个部分须要复制框B处和C处,就能够用寄存器,在A的地方,把两个部分存入不一样的寄存器,而后在去B,C处复制就行了,很是方便. 使用Ctrl + R 0 能够方便的把刚才复制的东西输入到命令栏,好比,使用
cscope进行查找的时候,向找一个函数的定义, 函数名长,怎么办呢, 使用 yw,复制函数名,而后,使用
:cs f g Ctrl_R 0 能够快速的输入函数名.
vim中a到Z是复制缓冲区,能够吧文本占时复制到缓冲区中,使用“ayy 把内容复制到a中,使用”ap 把a缓冲区中的内容取出来,要点就是使用”加在缓冲区名字的前面
主要是寄存器操做,简直神器,
首先,说用寄存器的命令要知道,C-R (ctrl+r)
好比说用a寄存器,就要说按Ctrl+r a 这样子.
0-9 a-z (只有小写) 都是vim的寄存器,
其中,1-9 是删除寄存器,分别记录上n次删除的内容,好比,我要复制上5次删除的内容使用 “5p 就能够了,
0呢,上一次复制的内容,yy自动存入,
a-z是具名寄存器,好比yy想存入a中,就是用 “ayy 这样子.
这些寄存器是能够混用的,
好比 / 和 ? 我想搜上4次删除的内容,就能够用
/<CTRL+R>4 回车,
这样子哦,
输入/”4 只能搜”4这样的字符,这个和vim的配置相关.
场景:就是跳转啊,若是能方便快速的在不一样的代码位置跳转,方便的不行了啊,这个就是干着个用的,
缓冲区的范围也是a-Z,使用m[a-Z]进行标记,标记的是光标所在的位置,使用’[a-Z]会跳转到相应的位置,要点就是,使用m标记,使用’进行跳转。
使用 :set ic开启忽略大小写,
使用 :set noic 关闭
ic 即 : ignore case 的简写
cscope是用于多种语言的(其实主要仍是c了)的符号查找程序.这个很厉害啊,只是使用起来比ctags稍微麻烦一点.
在源码目录使用cscope -cb 会生成一个cscope.out文件,若是只有指定目录,就把须要的全部文件写到cscope.files文件里, 一行一个文件就好了,
vimrc中也许有像set tag = xxx之类的设置,笨一点的方法就是使用cs add进行加入对应文件
使用 :cs f g XXX 找cscope.out中的XXX定义.
f表示查找 g 表示找定义,可使用 :cs help 进行查看,很方便.
对上一条中 f的展开
:cs help 会有说明
add {file|dir} [prefix dir] 添加一个cscope.out文件,能够指定文件或者目录加入cscope.out文件 ,cscope默认使用vim开启的目录开始查找,若是改了目录,使用 prefix dir从新指定一个就行了,要否则就会报某某某文件找不到.
find 查找,在加入的cscope.out文件中,按指定方式找对应的符号,g就是找定义,其余的看下一条.
kill # 从加入的cscope.out文件中除去一个.# 是序号,也可使用文件指定,使用须要方便啊.
show 显示已经加入的scope.out文件.前面就是kill须要的序号了.
reset 初始化全部的加入的cscope.out文件.
有关:cs f g XXX中g的扩展
0或s 查找这个符号.
1或g 查找这个定义.
2或d 查找这个函数调用的函数们.
3或c 查找调用这个函数的函数们.
4或t 查找这个字符串.
6或e 查找这个egrep匹配模式.
7或f 查找这个文件.
8或i 查找include这个文件的文件们.
使用技巧.
使用手工输入函数符号的是否是很麻烦呢,能够这样,使用 yw 复制一个单词,而后使用C_r 0 从复制复制寄存器中拿出上一个复制的内容.
场景对于显示行号,通常都须要的吧,对于显示相对行号,好处就是,方便的使用 [n] + j| k 进行跳转,
line('.')函数的使用场景:这个前提是在命令行使用\=表示后面的命令须要执行后的结果, 好比,想快速的给
枚举值作一个值的注释,枚举开始的地方是第12行,结束于100行 能够这样
:13,100s/$/\/\/ Value=\=line('.')-12/g
vim显示行号,很简单,开始显示,
set number 简写 set nu .
取消显示
set nonumber 简写 set nonu
显示相对行号 //对于查看结构体特别有用
set relativenumber
取消相对行号显示
set norelativenumber
有关line函数的使用
这个函数是获得行数,使用 :help line 能够查看许多内容.
line(‘.’) 当前行.
line(“‘t”) t标记所在的行,没有的话,返回0
做用:
给文件添加统一的前面 行号,是内容的序号,不是显示的.:
:%s/^/\=line('.').' '解释: * %s 是全局搜索. * ^ 表示每一行的开头 * = 表示 使用后面的替换 * line(‘.’) 表示但前行的行号,这个号码是根据匹配游标移动改变的. * . 表示字符串链接,链接后面的’ ‘(空格) 你总不但愿行号后面没有空格吧?
计算但前行到指定行的行差
这个比较麻烦,分一下几步:
- 在基准的行作一个标记,好比 ms 作一个s标记.
- 使用 / 或者其余什麽手段,移动到所在的行.
- 执行 :echo line(‘.’)-line(“‘s”) 就会在命令输入行打出一个数字,就是行差了,
虽然比较麻烦,但是使用q 定义好宏之后,使用@执行就好多了.
概述
这里的vim操做命令指的是按下 : 以后能够输入的命令
去掉全部空行
:g/^s*$/d
说明:
g : 全局命令
/ : 分割符
^s*$ : 全部匹配开头和结尾只有 空格 的行.
/d | : 删除该行 |
配置
set foldenable “设置容许折叠
set foldmethod=[manual|indent|] “设置折叠方式,manul手动 indent按缩进折叠
set foldlevel=3 “设置折叠的层级大小
操做
在normal模式下进行fold操做
z + c 折叠光标所在的区域(一次折叠一层)
z + C 折叠光标所在的区域(一次把光标所在的区域折叠到最小)
z + R 打开全部的折叠(一次打开到没有折叠的样子)
z + r 打开全部的折叠(一次打开一层折叠,再桉一次这打开下一层)
z + o 打开光标所在的折叠,或者 在光标所在的地方 按 l 也能够
z + M 折叠全部能够折叠的代码(以最大深度进行折叠)
z + m 折叠全部能够折叠的代码(以一层的深度递增折叠,再桉一次则折叠第二层)