人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
当前回答
在插入模式下,Ctrl-n将根据打开缓冲区中的所有单词自动完成您键入的任何单词。如果有多个匹配项,它将为您提供一个可能的单词列表,您可以使用ctrl-n和ctrl-p进行循环。
其他回答
不太晦涩,但有几个“delete in”命令非常有用,例如。。
指示删除当前单词di(要在当前父对象中删除di“删除引号之间的文本
其他信息可以在:帮助文本对象上找到
让我们看看一些非常小的IDE编辑器如何进行列转换。
:%s/\(.*\)^I\(.*\)/\2^I\1/
解释
\(和\)是如何记住正则表达式中的内容。1、2等是如何检索记忆中的内容。
>>> \(.*\)^I\(.*\)
记住所有内容,然后是^I(tab),然后是所有内容。
>>> \2^I\1
用“你记得的第二件事”替换上面的东西,然后是“你记得第一件事”——本质上是做一个换位。
从十六进制值输入字符(插入模式):
<C-Q>x[type the hexadecimal byte]
全部替换
:%s/oldtext/newtext/igc
给出一个替换所有:)
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时,它真的很有用。