Practical Vim Notes

小技巧

viw 中的 i 是 in 的意思, 这里就是 in word.

exec 命令

格式:

1
exec ""

"" 里面是在 : 中执行的指令.

设置 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> 会到上一处位置.


Practical Vim Notes
http://example.com/2022/09/20/Practical Vim Notes/
作者
Jie
发布于
2022年9月20日
许可协议