Rails.vim 導航指令
- 3. 1. gf (goto file)
在游標上打 gf 就會跳到 source code 所寫的檔案。
gf 是 Vim 的內建指令,不需要 plugin;
Rails.vim 強化了 gf 的功能,可以認得一些 Rails 特有寫法
(續下頁)
- 5. 補充:Vim jump 技巧
1. 到前一個 jump 點:<Ctrl-O>(Older,類似回上一頁)
2. 到後一個 jump 點:<Ctrl-I>
3. 在最後的 jump 點間往返:'' 或 ``(略有差異)
4.<Ctrl-W>gf 同 gf,但開在新視窗
5.:tab wincmd gf 同 gf,但開在新分頁
故可以用這個設定
nnoremap <Leader>gf :tab wincmd f<CR>
按下 <Leader>gf 就把 gf 開到新分頁。
- 6. 2. Alternate / Related files
並非 Rails 慣例(Rails 沒有所謂 alternate file 的東
西),純粹是 rails.vim 用來協助導覽的概念。
在檔案中,使用 :A 會前往 alternate 檔案,使用 :R 會前往
related 檔案。
例如 controller 的 related file 是 view,所以(續下頁)
- 7. Alternate / Related files 例子
游標在 app/controllers/about_controller.rb 的 index
action 中,使用 :R 指令會開啟
app/views/about/index.html.haml
也有一些變型可用
:RS(開在 split window)
:RV(開在 vertical split window)
:RT(開在新 tab)
- 8. 怎麼知道 xxx 檔案的 A / R 是對應到什麼?
1. 查文件 :help rails-alternate
但是每次都查,也太不直覺了
2. 按自己的意思設定
參考 :help rails-projections(續下頁)
或 Extending Rails.vim with Custom Commands
註:rails_projections 需要 rails.vim 5.0 以上
- 10. 我自己的 g:rails_projections(文字版)
let g:rails_projections = {
"app/models/*.rb": {
"alternate": ["app/controllers/%s_controller.rb", "app/controllers/%p_controller.rb"]
},
"app/controllers/*_controller.rb": {
"alternate": "app/models/%i.rb"
},
"public/javascripts/*.js": {
"alternate": ["public/javascripts/%s-src.js", "public/javascripts/%s-debug.js"]
},
"public/stylesheets/*.css": {
"alternate": "app/stylesheets/%s.scss"
},
"app/stylesheets/*.scss": {"command": "css"},
"public/javascripts/*-src.js": {"command": "js"},
"public/javascripts/*-debug.js": {"command": "js"},
"app/components/model_extensions/*_for_grid_panel.rb": {"command": "netzkegrid"},
"app/components/model_extensions/*_for_form_panel.rb": {"command": "netzkeform"}
}
- 11. 3. :Emodel、:Eview 系列指令
以 Rails 檔案類型為依據的 navigation,支援的「類型」例如:
• controller
• view
• layout
• initializer
• environment
可以使用 :Econtroller order 開啟 order_conteroller.rb,
用 :Eenvironment development 開啟
config/environments/development.rb
- 14. 補充:Vim command mode 補全技巧
按 <Ctrl-D> 會顯示所有可補全的項目
1. set wildmenu
2. set wildmode=longest:full,full
會啟用進化的 command line 自動完成,第一次按 <Tab> 會補到「最長
的共通 match」,再按 <Tab> 會顯示 menu,再按 <Tab> 開始選擇。