我将尝试对其进行微调。
当我在命令行中输入git status时,会得到一个需要解决的文件列表,如下所示:
# Unmerged paths: #
# (use "git reset HEAD <file>..." to unstage)
# (use "git add <file>..." to mark resolution)
#
# both modified: apache2/templates/default/apache2.conf.erb
# both modified: bootstrap/attributes/default.rb
# both modified: iptables/metadata.rb
# both modified: kickstart/templates/default/ks.cfg.erb
# both modified: openssl/metadata.json
# both modified: postfix/metadata.json
# both modified: postfix/templates/default/main.cf.erb
有没有一种简单的方法将这个文件路径列表传递到文本编辑器中,以便您可以一次性编辑它们?例如,我可以通过将其直接输入grep来实现:
[17:37]:git status | grep "both modified"
# both modified: apache2/templates/default/apache2.conf.erb
# both modified: bootstrap/attributes/default.rb
# both modified: iptables/metadata.rb
# both modified: kickstart/templates/default/ks.cfg.erb
# both modified: openssl/metadata.json
# both modified: postfix/metadata.json
# both modified: postfix/templates/default/main.cf.erb
但我不确定如何仅使用Shell命令返回此内容,或者是否最简单的方法是进入Ruby或Python,通过正则表达式传递每行,过滤掉# both modified:
。
我想要的最终结果类似于这样:
vim #{space_separated_list_of_files}
你们会如何处理这个问题?
!f() { git ls-files --unmerged | cut -f2 | sort -u | sed -r 's/ /\\\\ /g' ; }; f | xargs vim
- Destin:execute 'args ' . system('git unmerged | paste -sd \" \" -')
。我的unmerged命令与Destin的评论中的命令相同,但不会将结果导入vim,所以它会将文件分别输出到单独的行。paste -sd部分将文件放在一行上以供args命令使用。(或者您可以使用tabe) - TamaMcGlinn