人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
当前回答
:r! <command>
将外部命令的输出粘贴到缓冲区中。
做一些数学运算,直接在文本中得到结果:
:r! echo $((3 + 5 + 8))
获取编写Makefile时要编译的文件列表:
:r! ls *.c
不要在维基百科上查找你阅读的事实,直接将其粘贴到你正在编写的文档中:
:r! lynx -dump http://en.wikipedia.org/wiki/Whatever
其他回答
想要IDE吗?
:make将在当前目录中运行makefile,解析编译器输出,然后您可以使用:cn和:cp单步执行编译器错误,打开每个文件并查找有问题的行号。
:syntax on打开vim的语法高亮显示。
HOWTO:在Bash中使用Vim时自动完成Ctag。对于其他使用Vim和Ctags的人,我已经为Bash编写了一个小型自动补全器函数。将以下内容添加到~/.bash_completion文件中(如果不存在,请创建它):
感谢stylishpants的多次修复和改进。
_vim_ctags() {
local cur prev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
case "${prev}" in
-t)
# Avoid the complaint message when no tags file exists
if [ ! -r ./tags ]
then
return
fi
# Escape slashes to avoid confusing awk
cur=${cur////\\/}
COMPREPLY=( $(compgen -W "`awk -vORS=" " "/^${cur}/ { print \\$1 }" tags`" ) )
;;
*)
_filedir_xspec
;;
esac
}
# Files matching this pattern are excluded
excludelist='*.@(o|O|so|SO|so.!(conf)|SO.!(CONF)|a|A|rpm|RPM|deb|DEB|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MP?(E)G|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)'
complete -F _vim_ctags -f -X "${excludelist}" vi vim gvim rvim view rview rgvim rgview gview
重新启动Bash会话(或创建新会话)后,可以键入:
代码:
~$ vim -t MyC<tab key>
并且它将自动完成标记,就像它对文件和目录所做的那样:
代码:
MyClass MyClassFactory
~$ vim -t MyC
我发现当我快速修复bug时,它真的很有用。
我今天通过NSFAQ找到了这个:
注释代码块。
点击CTRL-V进入分块视觉模式。
标记要注释的块。
点击I(大写I)并在行的开头输入注释字符串。(//对于C++)
按ESC键,所选的所有行都将//前置到行的前面。
我喜欢使用“sudobash”,我的系统管理员讨厌这样。他锁定了“sudo”,因此它只能与少数命令(ls、chmod、chown、vi等)一起使用,但无论如何我都能使用vim获得根shell:
bash$ sudo vi +'silent !bash' +q
Password: ******
root#
在插入模式下,Ctrl-n将根据打开缓冲区中的所有单词自动完成您键入的任何单词。如果有多个匹配项,它将为您提供一个可能的单词列表,您可以使用ctrl-n和ctrl-p进行循环。