2007年2月22日 星期四

在VIM內直接執行script language

很久以前就很羨慕Emacs和script language的結合,沒想到VIM也可以輕易做到。

從《Programming Ruby》ch13 Editor Support看來的,只要script language屬於one pass interpreter,像是Ruby、Python,就可以把code直接導給interpreter。在VIM裡,以Ruby為例的做法如下:

:% w !ruby

  • 第一個欄位表示範圍,’%'是全文的意思
  • 第二個欄位是指令,’w'表示存檔
  • 第三個欄位是參數,’!'是執行外部程式,’!ruby’表示執行ruby

換句話說,”:% w !ruby”相當於在shell下這麼寫:

# cat my_script.rb | ruby

配合autocmd在~/.vimrc裡加上巨集,按F10就會執行檔案內的script:

autocmd BufRead,BufNewFile *.rb map <F10> :% w !ruby<CR>
autocmd BufRead,BufNewFile *.py map <F10> :% w !python<CR>

VIM的範圍操作用很強,也可以先用’V'(大寫V)選好範圍,再按’:'進ex mode,打 “w !ruby”就能只執行選取的部份。

:’< ,'> w !ruby # 執行選取範圍
:1,10 w !ruby # 執行1 - 10行的code

指令裡不含 ‘w’ 的話,執行完的結果會直接取代原本的內容。

沒有留言:

張貼留言