Practical Vim Notes
小技巧
viw
中的 i
是 in 的意思, 这里就是 in word
.
exec 命令
格式:
1 |
|
""
里面是在 :
中执行的指令.
设置 ignorecase
设置之后, 你在 :
后面的命令也会忽略大小写.
normal 模式下的 zz 指令
把光标下的那一行变成中心列.
多行执行命令
先在可视模式下选中文本, 然后按出冒号 :
, 就可以对选中的文本逐行执行命令.
执行宏命令
比如存在 a
这个寄存器里面, 使用 @a
来执行, 不需要冒号 :
.
在 nvim 下执行代码
分屏后, 通过 :term
打开一个终端.
16 ctags建立索引
102 ctags
在C文件中的作用大抵是从函数名跳转到其定义处,感觉只有文件多的时候才有作用。
Vim会为标签文件的所有关键字提供tab补全功能, 不是写代码的时候自动补全,而是用tag查找时。
使用:tag
和:tjump
跳转,可与正则表达式结合,如
:tag /{pattern}
标签文件
只是一个纯文本文件。
前几行是元数据,我理解为自动生成的注释,里面写了作者,版本这类信息。
后面每一行包括三部分,关键字、文件名和关键字在源文件中的位置。有一个元数据作为标记,比如c表示class,d表示define。
查找方式
使用查找命令/
标签文件的位置
Read :help tags
Read :help tags-option
.\
会被替换为当前路径。
使用:set tags?
来查看,输出如
tags=./tags,./TAGS,tags,TAGS
前面./tags
就表示当前路径下的tags文件,,
用于分隔。vim通过这个来查找标签文件的位置。若在一个标签文件中没有找到,就会找下一个。
生成标签文件
在Vim中
:ctags -R
从当前目录开始,遍历所有的子目录,为其中的每一个文件建立索引。
可选映射
:nnoremap <f5> :!ctags -R<cr>
自动更新标签文件
如
:autocmd BufWritePost * call system(“ctags -R”)
通过版本控制工具的回调机制自动执行ctags
参见Tim Pope的《Effortless Ctags with Git》
跳转
<C-]>
即Ctrl+]
, 从光标所在处跳转。
<C-t>
,回到上一次跳转的目标。
Read :help tag-stack
匹配标签的优先级
Read :help tag-priority
多处匹配
使用g<C-]>
感觉g是global的意思。
:tselect
调出标签匹配列表。
参考unimpaired插件。
可用命令
17 编译代码及quickfix
105 编译代码
使用:make
, 其作用和 shell 中使用 make 命令一样, 且会提取信息. 这个命令会让你跳转到第一处报错的地方, 使用 :make!
则不会跳转.
用 :h quickfix
查看 quickfix 的文档.
使用 :cnext
跳转到下一个位置, <C-o>
会到上一处位置.