在Vim中运行Ruby代码

11

在使用 Vim 编辑 Ruby 程序后,是否可以在编辑器中运行该程序,而不是使用命令行?


我发现这个指南很有用:http://alisnic.github.io/posts/vim-run-hotkey/ - eugenevd
6个回答

21

从Vim中,你可以使用以下命令运行当前缓冲区的Ruby代码:

:!ruby %

根据你的使用情况,这可能有用或无用。

同样地,你可以通过使用:!command来调用任何shell命令。


我尝试了puts "Hello world",但是:!ruby %执行命令cmd.exe /c ruby test.rb并出现“按任意键关闭窗口”的提示,没有其他信息。 - Sergey
1
在执行前,你应该保存缓冲区。所以尝试使用 :w - Xavier T.

2

这是一个老问题,但我想通过 @xavier 的答案进行微调。

将以下内容放入您的 .vimrc 文件中,您就可以运行当前的 Ruby 脚本而无需每次都确认按下 ENTER 键:

autocmd BufRead, *.rb nmap <leader>r :silent !{ruby %}<cr>

1
作为对@Xavier解决方案的补充,我建议在您的.vimrc中以以下方式绑定它:
" run ruby code using leader-r only when inside a .rb file
au BufRead, *.rb nmap <leader>r :!ruby %<cr>

0

是的,这是可能的。 例如 假设我想在文档中写入单词“hello” 100000 次。 现在我不会手动完成,而是使用 Ruby 脚本并在 vim 中运行它。 在终端中通过键入 vim script.rb 创建一个新文件。 输入以下代码:

10000.times do
       puts "hello"
end

在退出之前 按下Esc键,然后输入以下内容:

:w ! ruby > testfile.txt

这将运行vim中的脚本,并将返回的字符串添加到名为testfile的文本文件中。确保文件在相同的目录中,或者您可以将目录与名称一起指定。

0

你可以使用这个函数。

function RunWith (command)
  execute "w"
  execute "!clear;" . a:command . " " . expand("%")
endfunction

然后,只需创建一个仅适用于Ruby的快捷方式。您应该转到Ruby文件并按下此快捷键 :)
autocmd FileType ruby nmap <Leader>e :call RunWith("ruby")<cr>

您可以为任何文件类型创建快捷方式。 以下是JavaScript示例:

autocmd FileType js nmap <Leader>e :call RunWith("node")<cr>

-1
将这行代码加入你的 "vimrc" 文件并保存。
ennoremap <C-r> :!ruby % 

按下ctrl+r然后输入


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接