在Ruby上创建别名 - Vim输出不是终端

时间:2015-07-29 15:36:26

标签: ruby linux vim

我正在尝试在Ruby上创建一个别名:

(void *)

我在没有#!/usr/bin/env ruby if ARGV[0] `git add -A && git commit -m #{ARGV[0]} && git push` else `git add -A && EDITOR='TERM=xterm vim' git commit && git push` end 的情况下首先尝试过,但我尝试的任何事情都会EDITOR...

当我没有输入任何提交消息时,我想要的是vim。但相反,我得到了那个消息。

更新

我认为我需要的是像git那样捕获编辑器输出。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

反引号将命令输出捕获到一个字符串中供您在脚本中使用,Vim非常不满意,因为它无法打印您的UI。请改用system(),将所有内容交给新流程。如果您不需要返回Ruby脚本,可以使用exec()来完全替换该过程。

您还需要将您的邮件引用为git commit -m "#{ARGV[0]}",否则会将其解释为git commit -m My Commit Message并抱怨没有文件Commit或{{1} }。然后,当然,你需要逃避信息本身,这样你就不会提前打破双引号。请查看Shellwords#shellescape