我正在尝试在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那样捕获编辑器输出。我怎么能这样做?
答案 0 :(得分:2)
反引号将命令输出捕获到一个字符串中供您在脚本中使用,Vim非常不满意,因为它无法打印您的UI。请改用system()
,将所有内容交给新流程。如果您不需要返回Ruby脚本,可以使用exec()
来完全替换该过程。
您还需要将您的邮件引用为git commit -m "#{ARGV[0]}"
,否则会将其解释为git commit -m My Commit Message
并抱怨没有文件Commit
或{{1} }。然后,当然,你需要逃避信息本身,这样你就不会提前打破双引号。请查看Shellwords#shellescape。