很久以前就很羨慕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’ 的話,執行完的結果會直接取代原本的內容。
沒有留言:
張貼留言