【问题标题】:Execute an open default editor command inside vim在 vim 中执行一个打开的默认编辑器命令
【发布时间】:2013-09-18 00:55:51
【问题描述】:

我正在努力养成从不离开我的 gvim 的习惯,即使是在终端中执行命令也不行。这适用于:!<command>。然而,如果这个命令想要打开默认编辑器(vim),讽刺的是它在 gvim 中不起作用(它在命令行 vim 中起作用)。示例:

:!git commit
error: Terminal is dumb, but EDITOR unset
Please supply the message using either -m or -F option.

我可以跑:

:!git commit -m "message"

但是当我检查文件和编写提交消息时,我喜欢 vim 窗口。是否可以让提交窗口像命令行vim一样出现在gvim中?

【问题讨论】:

  • 您是否在启动 vim 的 shell 中设置了 EDITOR 环境变量(使用 export)?当你用 vim 运行一个外部命令时,它会调用一个新的 shell,它将继承环境变量而不是常规变量。例如,在我的~/.bash_profile 我有export SVN_EDITOR=vim

标签: linux git bash vim


【解决方案1】:

作为使用:! 命令进行炮击的替代方法,您可能想尝试 Tim Pope 的Fugitive 插件。引用文档:

我不会骗你的; fugitive.vim 可能是最好的 一直以来的 Git 包装器。

安装后,您只需运行:Gcommit 命令即可打开提交缓冲区。

在 Drew Neil 的 Vimcasts 他有一系列关于使用 Fugitive 的文章,值得一看:

【讨论】:

    【解决方案2】:

    Git 提交检查环境值 $EDITOR 以确定应打开哪个编辑器来输入提交消息,除非已在命令行上使用 -m 选项指定了消息。

    用途:

    :!EDITOR=vim git commit
    

    这会将$EDITOR 环境变量设置为vim。


    进一步解释:

    (来自 man git-commit)

    用于编辑提交日志消息的编辑器将从 GIT_EDITOR 环境变量,core.editor 配置 变量、VISUAL 环境变量或 EDITOR 环境 变量(按此顺序)。详见 git-var(1)。

    这意味着除了设置环境值之外,您还可以使用git config 来指定编辑器。 (我会这样做)

    git config core.editor vim
    

    如果你这样做了,那么 git commit 将不再检查 $EDITOR env var。

    【讨论】:

    • 我没有想到在 gvim 中设置变量,但是当我在将编辑器设置为 vim 后使用 gvim 中的 git 提交时,vim 会打印很多奇怪的字符。 ?[28;1H~ 等...
    • Ctrl+l 删除这些字符
    猜你喜欢
    • 2013-03-20
    • 2011-01-25
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2013-02-28
    相关资源
    最近更新 更多