人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。
然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。
当前回答
在插入模式下,ctrl+x,ctrl+p将完成(如果您喜欢的话,可以使用可能的完成菜单)您键入的当前长标识符。
if (SomeCall(LONG_ID_ <-- type c-x c-p here
[LONG_ID_I_CANT_POSSIBLY_REMEMBER]
LONG_ID_BUT_I_NEW_IT_WASNT_THIS_ONE
LONG_ID_GOSH_FORGOT_THIS
LONG_ID_ETC
∶
其他回答
:设置本地自动读取
自动重新加载当前缓冲区。。在查看日志文件时特别有用,它几乎可以从vim中为unix中的“tail”程序提供功能。
从vim中检查编译错误。根据perl语言设置makeprg变量
:setlocal makeprg=perl\-c\%
对于PHP
设置makeprg=php\-l\%设置错误格式=%m\\%f\\line\%l
发出“:make”将运行相关的makeprg,并在快速修复窗口中显示编译错误/警告,并可以轻松导航到相应的行号。
我最近发现了一件我觉得很酷的事:
:earlier 15m
将文档还原为15分钟前的状态。可以为您想要回滚的时间量提供各种参数,并且取决于撤消级别。可以用相反的命令反转:稍后
这里有些不明显的地方。如果你的$HOME中有很多自定义插件/扩展,你需要从su/sudo/。。。有时,这可能是有用的。
在~/.bashrc中:
export VIMINIT=“:so$HOME/.vimrc”
在~/.vimrc中:
如果$HOME=='/root'如果$USER=='root'如果是目录('/home/your_typeualusername')let rtuser='your_typeal_user'elseif是目录('/home/your_other_username')let rtuser='your_other_username'结束符其他的let rtuser=$USER结束符让&runtimepath=替换(&runtimepath,$HOME,'/HOME/'.rutter,'g')结束符
它将允许您的本地插件加载-无论您使用何种方式更改用户。
您可能还想将*.swp文件从当前路径中取出,并放入~/vimtmp(这将放入.vimrc中):
如果isdirectory(展开('~/vimtmp'))调用mkdir(展开('~/vimtmp'))结束符如果是目录(展开('~/vimtmp'))设置目录=~/vimtmp其他的设置目录=/var/tmp、/tmp结束符
此外,我使用一些映射来简化编辑-使ctrl+s可以像escape和ctrl+h/l那样切换选项卡:
inoremap<C-s><ESC>vnoremap<C-s><ESC>noremap<C-l>gtnoremap<C-h>gT
:%!xxd
将vim制作成十六进制编辑器。
:%!xxd -r
还原
警告:如果不使用二进制(-b)进行编辑,可能会损坏文件。–Josh Lee在评论中写道。
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时,它真的很有用。