vim小技巧

简介: vim中字符串出现次数的统计在所有行中查找 字符串 出现的次数 :%s/字符串//gn:%s/字符串/&/gn在m和n行之间查找 字符串 出现的次数:m,ns/字符串/&/gn C-r (register) 在insert模式下插入寄存器对应的内容在insert模式下,C-r (register) 插入register里的内容,一个有趣的reg是”=”. 假设你想输入123K的具体字节数,不用打开计算器,试试这个”=1024*123″,”125952″就出来了! * 向下查找当前光标所在单词或字符串g* 查找则不限制whole word。

vim中字符串出现次数的统计
在所有行中查找 字符串 出现的次数

:%s/字符串//gn
:%s/字符串/&/gn
在m和n行之间查找 字符串 出现的次数
:m,ns/字符串/&/gn

C-r (register) 在insert模式下插入寄存器对应的内容
在insert模式下,C-r (register) 插入register里的内容,一个有趣的reg是”=”. 假设你想输入123K的具体字节数,不用打开计算器,试试这个”=1024*123″,”125952″就出来了!

* 向下查找当前光标所在单词或字符串
g* 查找则不限制whole word。 区别:比如在if这个单词上按*键则查找单词if,按g*键则查找if。

# 向上查找当前光标所在单词或字符串
g# 查找则不限制whole word。 区别:比如在if这个单词上按#键则查找单词if,按g#键则查找if。

删掉偶数行
:g/^/+1 d 或 %norm jdd

C-o (fast out, fast in)
在insert模式下,用C-o后可以执行一个normal命令,然后立即返回insert模式,省去了用ESC的麻烦。

[I (fast grep )
[I 显示文件中包含光标下的所有行。我常用来浏览某个id在程序中的引用情况。 还有很多相关的命令::h include-search

删除文件中所有的空行
:g/^\s*$/d

去掉所有的行尾空格
:%s/\s\+$//

去掉所有的“//”开头的注释
:%s#\s*//.*##

去掉所有的“/* */”注释
:%s#\s*/\*\_.\{-}\*/\s*# #g
(这个略有点复杂了,用到了几个不太常用的 Vim 正则表达式特性。“\_.”匹配包含换行在内的所有字符;“\{-}”表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好;标志“g”表示一行里可以匹配和替换多次。替换的结果是个空格的目的是保证像“int/* space not necessary around comments */main()”这样的表达式在替换之后仍然是合法)

精确匹配查找单词
如果你输入 “/the”,你也可能找到 “there”。要找到以 “the” 结尾的单词,可以用:
/the\> “\>” 是一个特殊的记号,表示只匹配单词末尾。类似地,”\<” 只匹配单词的开头。
这样,要匹配一个完整的单词 “the”,只需:/\<the\>

特殊的“寄存器”:”=”
在插入模式或命令模式中,键入“Ctrl-R=”,Vim 会提示你输入一个表达式,普通的整数运算在此完全有效。

单词的自动完成
Ctrl+p
比如,你前面使用了一个很长的变量名,叫 aLongVariable,下面你在输入时,就不用完整键入了。很可能,你只需要键入“aL”,然后按下“Ctrl-P”(向前搜索可匹配的单词并完成)就可以得到完整的变量名(没有得到想要的结果的话,多按几下“Ctrl-P”;或者前面多输入几个字符,如“aLongV”)。类似的命令还有“Ctrl-N”(向后搜索可匹配的单词并完成)、“Ctrl-X Ctrl-L”(搜索可匹配的行并完成)、“Ctrl-X Ctrl-F”(搜索可匹配的文件名并完成)等,具体可参看“:help ins-completion”。

Make 和 grep
Make 和grep 应当算是 Unix 世界里无人不晓的基本工具了吧。很自然的,Vim 对它们有着特殊的支持。该支持主要通过访问一个特殊的快速修订窗口(quickfix window)来实现。直接在 Vim 的命令模式里输入相应的 make 或 grep 命令(如“:grep foo *.c”)即可将命令的执行结果放入该窗口,同时根据返回的结果跳转到第一个错误(make 的情况;在使用 grep 时是匹配成功之处)。以下是常用的“快速修订”命令:

:cn(显示下一个错误)
:cp(显示上一个错误)
:cl(列出所有的错误及其编号)
:cc(跳转到指定编号的错误)
:copen(打开快速修订窗口,在其中显示所有错误,可在错误上双击鼠标或按回车键跳转至该错误

执行外部命令
:!命令

单词大小写转换
guw(光标下的单词变为小写)
gUw(光标下的单词变为大写)

相关文章
|
SQL 开发工具 Perl
[20180417]vim小技巧.txt
[20180417]vim小技巧.txt --//今天调试plsql,发现跟踪到的sql语句在跟踪文件是在一行的,开始以为是开发写成这样,实际上PL/SQL写的语句 --//到跟踪就变成一行,这样就太长,这样为了更好观察我必须设置wrap,执行如下:set wr...
1077 0
|
Unix PHP 开发工具
|
开发工具 搜索推荐 网络安全
《Vim实用技巧(第2版)》——导读
Vim是高度可配置的,然而定制是一件很个性化的事情,因此我试图避免建议什么应该放进你的vimrc里,什么不应该。相反,本书关注的是Vim编辑器的核心功能。不管你是通过SSH登录远端服务器工作,还是在用本地安装了插件而增添了额外功能的GVim,这些功能都永远在那儿。
1845 0
|
开发工具
《Vim实用技巧(第2版)》——2.6 双剑合璧,天下无敌
如果想用 = 命令自动缩进整个文件,可以执行 gg=G (就是说,先用 gg 跳到文件开头,然后用 =G 自动缩进从光标位置到文件结尾的所有内容)。但是如果安装了textobj-entire插件的话,简单地执行 =ae 就可以了。运行这条命令时光标在哪儿并不重要,因为它总是作用于整个文件。
2493 0
|
开发工具
《Vim实用技巧(第2版)》——1.6 认识 . 范式
到目前为止,我们介绍了3个简单的编辑任务。尽管每个问题都不一样,不过我们都找到了用 . 命令解决该问题的方法。在本节,我们将比较这些方案,并找出它们共有的模式——一个我称之为“ . 范式”的最佳编辑模式。
1338 0
|
JavaScript 开发工具 前端开发
《Vim实用技巧(第2版)》——1.3 以退为进
先后退一步,然后前进三步,这是个奇怪的小花招,看起来可能不够直接。但这样做最大的好处是:我们可以用 . 命令重复这一修改。我们所要做的只是把光标移到下一个 + 号处,然后用 . 命令重复这一操作即可。
1668 0
|
开发工具
Vim/Vi实用技巧(第二版)
Vim/Vi实用技巧 1、导入文件 :r [文件名] #导入到当前编辑的文件中 如 :r /etc/inittab   文件上部为/etc/services文件,下部为/etc/ini...
914 0
|
3月前
|
Unix Linux 开发工具
在Linux中,有哪些基本的 Vim 命令?
在Linux中,有哪些基本的 Vim 命令?