人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。

然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。


当前回答

:%!xxd

将vim制作成十六进制编辑器。

:%!xxd -r

还原

警告:如果不使用二进制(-b)进行编辑,可能会损坏文件。–Josh Lee在评论中写道。

其他回答

从十六进制值输入字符(插入模式):

<C-Q>x[type the hexadecimal byte]

宏可以调用其他宏,也可以调用自身。

eg:

qq0dwj@qq@q

…将删除每行中的第一个单词,直到文件结束。

这是一个非常简单的示例,但它展示了vim的一个非常强大的功能

通常,我喜欢在编辑时更改当前目录,所以我必须少指定路径。

cd %:h

%当您希望在项目的两个不同副本之间比较文件而不磨损粉色(从项目1的根)时,也是很好的:

:vert diffs /project2/root/%

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时,它真的很有用。