代码之家  ›  专栏  ›  技术社区  ›  GAVD

通过vim打开多个文件

  •  2
  • GAVD  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  8
  •   Ingo Karkat    7 年前

    它只打印vim-O。

    整个右侧在双引号内;这意味着 命令替换 ( $(...) )在定义变量时立即计算。如果(此时)你不是在Git工作副本中,你会得到一个错误;如果没有修改过的文件,结果将是空的,并且会持久化到变量中。

    正名

    export 命令用于 环境变量 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}')
    }
    
        2
  •  2
  •   sensorario    7 年前

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