通过Vim打开多个文件

时间:2018-09-18 10:21:00

标签: git vim

我知道如何使用git在vim中打开多个修改过的文件。

vim -O $(git status -uno -s | awk '{print $2}')

但是当我在.bashrc文件中添加此命令

export vim_open="vim -O $(git status -uno -s | awk '{print $2}')"

它无法正常工作。我尝试回显它,但它仅打印vim -O

编辑:我的错:git status -uno -s

如何为命令创建别名?

2 个答案:

答案 0 :(得分:8)

  

仅打印vim -O。

整个右侧在双引号内;这意味着在定义变量时,将立即评估命令替换$(...))。如果(此时)您不在Git工作副本中,则会出现错误;如果没有修改过的文件,则结果将为空,并将其保存在变量中。

适当的别名

export命令用于环境变量;在Bash中,有一个单独的alias命令:

alias vim_open='vim -O $(git stat -uno -s | awk '\''{print $2}'\'')'

请注意我如何使用单引号来避免立即执行嵌入式命令替换(然后必须转义其他嵌入式单引号)。另外,我可以保留双引号,而仅将$字符转义以进行命令替换和变量引用:

alias vim_open="vim -O \$(git stat -uno -s | awk '{print \$2}')"

具有功能的超能力

最后,要保留将命令行参数传递给Vim的能力(这些必须在文件列表的之前,但别名只能在末尾附加它们),您必须而是定义一个shell函数:

vim_open()
{
    #     v--- arguments passed to vim_open are inserted here
    vim "$@" -O $(git stat -uno -s | awk '{print $2}')
}

答案 1 :(得分:2)

我还可以建议在标签中打开所有已修改文件的类似别名

alias vmod='vim -p `git diff --name-only `'