繁体   English   中英

vim将带有冒号的参数解释为filename:line:column

[英]vim interpret argument with colon(s) as filename:line:column

是否可以以这样的方式配置VIM,如果我输入

vim filename:123:89

它打开文件文件filename转到第123行和第89列?

如果没有通过VIM可能有一个hack的shell?

您可以安装文件行插件以打开文件到文件名后指定的行和列。 github镜子

来自github上的自述文件

当你打开一个file:line ,例如当你从编译器中复制和粘贴错误时,vim会尝试打开一个名字中带冒号的文件。

例子:

 vim index.html:20 vim app/models/user.rb:1337 

如果冒号之后的东西是一个数字,并且存在一个文件存在,并且冒号之前有一个文件存在,冒号将打开这个文件并带你到你想要的第一行。

我不知道如何跳到专栏,但我想要多年的相同功能,所以我只是破解了“跳转到线”功能。 在你的.bashrc ,设置

VIM=$(which vim)

function vim {
    local args
    IFS=':' read -a args <<< "$1"
    "$VIM" "${args[0]}" +0"${args[1]}"
}

此拆分参数的Vim由: ,然后构造形式的命令行

vim <filename> +0<line>

+0是一个黑客,以确保默认行号为零。

(如果你没有使用Bash,你可以将它改编成一个脚本并将它放在你的路径中,或者将它翻译成你最喜欢的shell语言。要编辑filename:with:colons ,使用$VIM 。)

我一直在使用文件行插件,但它有一些未解决的问题,并打破了其他一些vim插件。 所以我去钓鱼寻求更好的解决方案。 这里是:

function vim() {
        local first="$1"
        case $first in
                *:*)
                        shift
                        command vim ${first%%:*} +0${first##*:} $@
                        ;;
                *)
                        command vim $@
                        ;;
        esac
}

限制:

  • 只有bash
  • 仅解析第一个参数,而vim + X解析第一个文件参数。 使用适当的命令行解析可以轻松地创建更复杂的版本。

好处:

  • 不破坏其他vim插件
  • 你可以很容易地使用$ EDITOR并将其用于emacs。
  • 与Fred的回答相比,它不使用IFS / read来解析参数,而是使用bash参数扩展。
  • 还会发送剩余的参数,这可能偶尔是必要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM