首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要从Rakefile打开Vim吗?

要从Rakefile打开Vim吗?
EN

Stack Overflow用户
提问于 2012-06-14 02:51:33
回答 2查看 890关注 0票数 5

我正在为个人笔记创建一个日志应用程序,并在我的Rakefile中包含以下内容

代码语言:javascript
复制
task :new do
  entry_name = "Entries/#{Time.now.to_s.gsub(/[-\ :]+/, '.').gsub(/.0500+/,'')}.md"
  `touch #{entry_name}`
  `echo "# $(date)" >> #{entry_name}`
end

我想要包含的最后一部分是打开Vim文本编辑器,但是我不知道如何打开它,就像我直接从bash终端调用它一样。

我试过了:

代码语言:javascript
复制
vim #{entry_name}

但不幸的是,我认为这两个过程都是作为后台进程打开的。

我一直在引用"6 Ways to Run Shell Commands in Ruby“。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-14 03:23:39

与在article you referenced中一样,Vim在当前进程内的子subshell中运行命令,但真正的问题是它也试图从命令运行中获取输出,这在`中不起作用。

您可以执行以下任一操作:

  • 使用exec用新进程替换当前进程(请注意,一旦调用exec,Ruby/Rake进程就会结束,并且在它运行之后什么也不会运行)。
  • 使用system创建一个类似Vim s的子subshell,但避免了试图获取`的stdout的问题。与exec不同的是,在Vim终止后,ruby会继续运行。
票数 10
EN

Stack Overflow用户

发布于 2019-05-08 00:59:33

您需要将tty作为退格键等的标准输入传递,才能在vim中正常工作:

代码语言:javascript
复制
exec("</dev/tty vim a b")

很明显,反引号(`)不起作用,但我在脚本中使用system/exec时遇到了问题。

首先我得到Vim: Warning: Input is not from a terminal,然后当我使用backspace时我看到了^?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11021456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档