--------------------------------------------------------------------------------
甲:vim 删除空行:
--------------------------------------------------------------------------------
方法1: 用vim 的 d 命令, 并配合g 修饰符
:g/^$/d
用途: 我常用它删除 编译器预处理输出 .i 文件中的空行, 好处是让代码紧凑点。
方法2:用连续两个或多个换行替换为一个换行。vim 中替换符要用\r
::%s/\n\n/\r/
::%s/\n*\n/\r/
当然,如果一个空行也不留,用方法1就行了,简单.
方法2则稍显复杂。但如果将多个连续的空行删除为一个空行。
则可以如下操作
:%s/\n*\n/\r\r/
用途: 规格化c/c++ 代码. 例如有的代码行之间或函数和函数间有太多的空行时。
--------------------------------------------------------------------------------
乙:vim 格式化c/c++ 头文件中的参数。
--------------------------------------------------------------------------------
例如: 令各参数中分隔符, 有且只有一个空格。
先选中预格式化的函数头,执行选择块替换, 就达到目的了。
'<,'>s/, */ /gc
有助于16进制编辑的vim 命令
--------------------------------------------------------------------------------
丙: 定位命令(go)
--------------------------------------------------------------------------------
我们知道gg 到文件首,G 到文件尾, 30G 到第30行, :30 也到第30行。
但是还有更多!
1."ga"命令可以来查明当前光标下字符的本来面目"
2.g CTRL-G "可以获知光标所在字符在整个文件中详细位置,第几行,第几列,第几个词,第几个字节"
3.123go "转到第123个字节去"
--------------------------------------------------------------------------------
丁: xxd外部 命令
--------------------------------------------------------------------------------
1 用":%!xxd"进行十六进制格式的转储
2 编辑完毕后使用":%!xxd -r"反向转换,(小心,编辑时最好只是替换,而不要添加和删除)
--------------------------------------------------------------------------------
戊:去掉所有的“/* */”注释:
--------------------------------------------------------------------------------
%s!/\*\_.\{-}\*/! !g
可以替换为空格,或简单的去掉。
解释:
这个略有点复杂了,用到了几个不太常用的 Vim 正则表达式特性。 help pattern 有解释
“\_.”匹配包含换行在内的所有字符;
“\{-}”表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好;(非贪婪匹配)
标志“g”表示一行里可以匹配和替换多次。
重新复习了一遍多行匹配:
vim: c 多行注释匹配
1. 查找命令
可以高亮显示多行注释
/\/\*\_.\{-}\*\/ --> c 多行注释匹配
\_. --> 匹配回车及任意字符(多行匹配)
\{-} --> 非贪婪匹配
2. 替换命令
例如删除多行注释, 带确认
%s/\/\*\_.\{-}\*\///c
进一步用%s###简化为:
%s#/\*\_.\{-}\*/##c
--------------------------------------------------------------------------------
己:临时高亮文字。使用match, 2match, 3match
--------------------------------------------------------------------------------
功能更强大的高亮可以用插件。
例如: 高亮空格, 目的是观察Tab 中有无空格。
match Search /\s\+/
match 的用法: match {highlight group} /{pattern}/
--------------------------------------------------------------------------------
庚:vim errorformat
--------------------------------------------------------------------------------
errorformat 可以帮助我们定位错误。
最简单的设置可以为: set efm=%f:%l:%m
含义: 格式为 文件:代码行:信息
其中文件是包含路径的,以当前文件为基本路径。
android 的mm 命令由于是shell 脚本,其信息输出在stberr 中,
而由于种种原因vim 不能收集它为errfile, 此时可以
在控制台上收集出错信息存为一个文件。
例如: mm 2>err.txt
然后用vim cfile err.txt 来加载错误文件。利用vim 的quickfix 功能定位错误行