2013-06-20 46 views
2

我最近一直在使用VIM作爲我的編輯器,但仍然沒有發現自己比Sublime Text 2獲得更多的生產力。我讀過一半「Practical Vim」一書,我幾乎完全處於正常模式,而不是插入模式。偶爾使用Visual。使用VIM有效地使用Ruby/Rails

我的Vim的插件如下:

➜ depot-app git:(master) ls -l ~/.vim/bundle 
total 84 
drwxrwxr-x 5 richard richard 4096 Jun 9 17:31 bufexplorer 
drwxrwxr-x 4 richard richard 4096 Jun 8 23:48 jacinto.vim 
drwxrwxr-x 5 richard richard 4096 Jun 8 23:41 nerdcommenter 
drwxrwxr-x 9 richard richard 4096 Jun 8 23:39 nerdtree 
drwxrwxr-x 8 richard richard 4096 Jun 8 23:43 syntastic 
drwxrwxr-x 6 richard richard 4096 Jun 8 23:51 vim-bundler 
drwxrwxr-x 11 richard richard 4096 Jun 8 23:47 vim-coffee-script 
drwxrwxr-x 5 richard richard 4096 Jun 8 23:30 vim-commentary 
drwxrwxr-x 4 richard richard 4096 Jun 8 23:35 vim-endwise 
drwxrwxr-x 5 richard richard 4096 Jun 8 23:39 vim-eunuch 
drwxrwxr-x 8 richard richard 4096 Jun 8 23:46 vim-haml 
drwxrwxr-x 6 richard richard 4096 Jun 8 23:45 vim-markdown 
drwxrwxr-x 6 richard richard 4096 Jun 8 23:51 vim-rails 
drwxrwxr-x 4 richard richard 4096 Jun 8 23:36 vim-repeat 
drwxrwxr-x 13 richard richard 4096 Jun 8 23:50 vim-ruby 
drwxrwxr-x 8 richard richard 4096 Jun 8 23:52 vim-ruby-refactoring 
drwxrwxr-x 6 richard richard 4096 Jun 8 23:35 vim-speeddating 
drwxrwxr-x 5 richard richard 4096 Jun 8 23:37 vim-surround 
drwxrwxr-x 6 richard richard 4096 Jun 8 23:53 vim-textobj-rubyblock 
drwxrwxr-x 6 richard richard 4096 Jun 8 23:51 vim-textobj-user 
drwxrwxr-x 5 richard richard 4096 Jun 8 23:38 vim-unimpaired 

在崇高的文本2,我可以按Alt +。要快速關閉任何html標記,還需要用引號將行綁定,或插入<%=%>並將光標放在中間,這樣我就不必自己輸入eRuby標記。那麼缺乏自動完成功能,但我現在可以沒有這種生活,至少現在是這樣。

我該如何在Vim中完成這些工作?

注意:我使用Ubuntu存儲庫中最新版本的vim。

+0

請關閉此問題或其他人。 – romainl

+1

完成,我認爲他們是完全獨立的網站,我很抱歉。 – Senjai

回答

2

Vim有不同的完成機制以適應不同的需求:關鍵字完成,行完成,文件名完成...和全方位完成這可能是你需要的。 Vim不會做自動完井,雖然,但也有一些是提供該功能的插件:AutoComplPopNeoCompleteYouCompleteMe ...

想這些插件之前,我建議你閱讀:help new-omni-completion(和相關頁面)並學習如何使用內置機制。 <C-x><C-o>顯然既不是汽車 -matic也不是很舒服,但很容易重新映射到別的東西和工作。


你已經擁有環繞聲:那是什麼讓你環繞(提示)文本與報價和更多。你現在需要的是讀:help surround。這是該快捷方式,你用它來使用雙引號當前行:

yss" 

雖然<%= %>東西可以相對容易地用縮寫來完成(:help abbreviations):

iabbrev etag <%= %><Left><Left><Left> 

插件,像SnipMateUltiSnips處理那種事情的方式更好。


上述全方位完成可用於關閉HTML標籤,但它並不真正最佳。我傾向於使用SnipMate插入標籤,但有一些標籤關閉插件,如XML.vim

事實上,這個問題和etag一個很容易通過一個插件解決,RagTag

祝你好運。

+0

謝謝羅曼提供這樣一個優秀的答案:)其他人都幫助過,但這是最豐富的,謝謝你的時間。 – Senjai

2

只要你有vim-rails和vim-surround,你應該可以在插入模式下按<c-s>=<%= %>。請注意您可能需要做的終端<c-g>s=

結束標記可以通過ragtagclosetag插件完成。有關更多選項,請參閱此帖:How can one close HTML tags in Vim quickly?

+0

我有兩個,但在插入模式下,這隻會在等號之間添加光標==。 – Senjai

+0

請原諒我的無知,我試圖在.rb文件上使用這個快捷方式,這可以在視圖或任何其他erb文件中使用。謝謝你的提示。 – Senjai

+0

假設您安裝了vim-rails和vim-surround。使用vim **先選擇**字,然後'S ='代表'<%= %>'標籤,'S#'代表'<%# %>'代碼,'S'代表'<% %>'標籤。 –

1

這聽起來像你很好。看看下面的一些鏈接來解決你遇到的問題。有許多方法可以在vim中插入需求。我已經成功使用以下內容:

要快速關閉任何html標記/插入<%=%>嘗試ragtag.vim(https://github.com/tpope/vim-ragtag)。要用引號括住一行,請嘗試使用surround.vim(https://github.com/tpope/vim-surround)。 Tim Pope(也是rails.vim插件的作者)有一些其他整潔的插件值得關注。最後,對於自動完成,請參閱Vim auto complete。我覺得將自動完成功能映射到選項卡很有用。

1

您應該認真嘗試Snipmate。它允許你做一些類似於html的事情,然後按Tab鍵,它將爲你提供完整的HTML標籤,並將光標放置在一個便於編輯的方式。它支持多種語言,包括ruby和RoR。

+0

使用snipmate創建自己的片段也非常簡單。 –