2010-06-22 30 views
2

我一直在使用Notepad ++一段時間;實際上,我甚至已經開始使用Launchy來「將這個資源加載到編輯器中」,許多更完整的IDE就像Eclipse一樣。它具有語法高亮顯示,拆分窗口視圖,代碼摺疊,圓括號(和其他分隔符)配對,自動縮進,塊註釋。使用vim編程Ruby(通過Notepad ++)有什麼優勢? (其他語言,但特別是Ruby)

但是,似乎無處不在,人們正在使用vim來滿足他們的編程需求。

我知道vim的基礎知識;當我在linux機器上時,它是我的主要「基本文本編輯器」;我像使用Windows上的基本記事本一樣使用它。我得到的控件,大多數快捷方式,重複消除器等。

我不完全理解的是這些殺手級應用程序,人們都贊同。如何「在Ruby中調試Ruby是一種改變生活的體驗」,或者在使用它時如何發生魔法。

我錯過了一些重要的插件嗎?有沒有我沒有看到的維度?我應該閉嘴並開始使用它一下,看看?我如何獲得語法突出顯示?

我特別指定了Ruby,因爲我想爲它找到一些插件。請注意,我是而不是使用Rails的,答案應該與rails無關。但我欣賞一些關於其他語言編程的一般vim-ness koans。

謝謝,我希望我的問題不是太模糊或啓發任何討厭的編輯之戰。

+0

我很驚訝你會看到很多使用Ruby的程序員。我看到許多使用它的系統管理員,並且在服務器上運行時我自己使用它。它總是在那裏,加載速度很快。對於編程,這確實是一個偏好問題。我看到很多使用TextMate for Ruby的人。我自己使用TextMate,Netbeans和我現在使用RubyMine。 – Pablo 2010-06-22 10:39:59

+2

@ j-pablo-fernandez你的意思是「我很驚訝你看到很多使用Vim編寫Ruby程序的程序員」?否則,你說的是非常不同的東西。 – Telemachus 2010-06-22 13:52:44

回答

5

我使用vim進行所有的Ruby編程,我認爲它的可定製性是它的殺手級功能。使用vim,你可以做所有可以想象的文本,如果你願意投入時間尋找你想要的插件或者自己編寫幾個腳本。

我只列出我喜歡的vim編程的幾件事情(排名不分先後):

  • 語法高亮

    紅寶石語法高亮是非常好的。具體來說,有一點似乎有點獨特,就是根據上下文,關鍵字的顏色可能會有所不同。這並不是我想要的那麼多,但是你可以很容易地看到這個end語句是否關閉,比如if語句或函數定義。

    另外不錯的是,由於vim知道文本的哪些部分是註釋,所以你只能對這些進行拼寫檢查。

  • 自動縮進。

    當您編寫代碼時,vim會自動將光標放在正確的縮進級別,所以您不必擔心這一點。我還發現自己通過選擇一個塊並按=自動(重新)縮進突出顯示的所有內容來手動調用此功能。

  • 自動完成

    我用一個plugin自動彈出completions。這些都是非常靈活。他們知道的類從標準庫的方法,看看其他的文件已打開(好變量名和類方法),承認當你輸入一個文件名等

  • 片段

    有是一個名爲snipMate的插件,提供了經常使用的文本片段的快捷方式。這對編寫測試等很有幫助。

  • 代碼摺疊

  • 腳本化

    正如我所說的,Vim的腳本是非常強大的。在行末尾需要自動刪除空白嗎?只需編寫一行腳本。

  • 插件,插件,插件!

    有很多插件可以幫助你處理各種事情。 Git的整合,Rails integrationRspec integrationautoclosing括號,matching關鍵字打開塊{defdoifwhile等}他們end ...名單是幾乎是無止境的。

1

對我來說,vim的「殺手功能」之一就是它的ad-hoc macros

q然後一鍵名存儲在宏(我經常使用m爲宏記憶,但任何字母都可以),你會發現在底部的recording狀態。現在,您按下的任何按鍵都將被記錄,直到您再次按q,並且您已在信m中記錄了一個宏。現在鍵入@m,您的擊鍵將從當前光標位置開始播放,具有所有含義。按[email protected],您將重播該宏20次,現在您已經擁有了編寫文本的強大工具,無需編寫較大程序(或配置文件)的開銷。

對於紅寶石具體地,語法突出顯示(:syn on),自動縮進(:set cindent),和括號/托架配對(%將光標移動到匹配的括號)和其它的特徵可以在其他編輯中找到,因爲你提。但是,真的,vim中的一般文本處理宏對於任何文本文件都是很大的優勢。

+1

我不認爲我已經使用了一個被稱爲「程序員編輯器」的編輯器,這個編輯器在很多很多年沒有某種形式的臨時宏觀錄製系統。 (我在說這裏的DEC微型計算機操作系統級別。) – 2010-06-22 14:26:03

1

vim的個人殺手功能是謙卑的.命令。該命令重複當前光標位置的最後編輯。這可以節省很多時間。

2

它是一款非常強大的編輯器,它與版本控制很好地集成在一起,並且有很多可用的附加組件。 (請參閱the scripts page以及the tips wiki。)這些是考慮 Vim的很好的理由,但也有許多其他良好的編輯器可用於各種平臺。 (看,馬,沒有宗教編輯的戰爭!)

就非常特定於Ruby的附加組件而言,請查看endwise by Tim Pope作爲示例。 (它會在do,if等之後自動插入end)。實際上幾乎所有的Tim Pope's scripts都可能對Rubyists有用。

如何獲得語法高亮顯示?

至少需要一個最小.vimrc.gvimrc獲得語法高亮和自動縮進(假設你想要的)。 Vim附帶了可以幫助你開始的例子,如果你搜索'vimrc'或'gvimrc',你會得到很多點擊。也就是說,下面是我的一些開始:

" Most general settings first 
set nocompatible   " Set Vim rather than Vi settings; must go first 
set noeb     " Set no audio or visual error beep 
set bs=indent,eol,start  " Backspace over everything in insert mode 
set history=500    " Keep 50 lines of command line history 

" Set items for view @ bottom of windows 
set ruler     " Show the cursor position all the time 
set showcmd     " Display incomplete commands 
set showmode    " Display current mode 
set ls=2     " Always show status bar 

" Syntax basics 
syntax on 
filetype indent on 
set autoindent 
set smartindent 
filetype plugin on 

" Text basics 
set textwidth=80   " Set text to wrap at 80 columns 
set expandtab    " Convert tabs to spaces 
set tabstop=4    " Tabs = 4 spaces 
set shiftwidth=4   " Indent/outdent 4 spaces 
set softtabstop=4   " Tab key indents 
set shiftround    " Indent/outdent to nearest tabstop 
set smarttab    " Uses shiftwidth @ start of lines 
set fo=trcn 

" An exception for Ruby files 
autocmd FileType ruby set tabstop=2 
autocmd FileType ruby set shiftwidth=2 
autocmd FileType ruby set softtabstop=2 
autocmd FileType ruby set number  

" Search basics 
set incsearch    " Do incremental searching 
set showmatch    " Show matching brackets 
set hlsearch    " Highlight all matches in a search 

" Don't use Ex mode, use Q for formatting 
map Q gq 

" Pick a colorscheme 
colorscheme Dim 
1

我認爲VIM的主要優勢在於它是跨平臺的。現在你使用的是notepad ++,這是一個很棒的編輯器(即使它沒有很好的宏功能)。明天,你可能會被迫使用另一個操作系統,你應該學會使用另一個文本編輯器。

1

我知道你來自哪裏。我使用IDE甚至記事本++的時間長於我的記憶。如果所有使用VIM的都是基本導航,那麼您將不會充分利用它的潛力。雖然有幾個非常強大的插件,但我不相信找到合適的插件是VIM如此強大的原因。

這對我來說意味着我的雙手不會從鍵盤上移開,它可以讓我留在區域中。每次我去看老鼠,總會導致集中突破 - 作爲一名程序員是不可饒恕的罪過。

我的另一個殺手功能是使用正則表達式進行搜索和替換。我強烈建議多瞭解一下。或者用Jamis Buck的話說:「瞭解你的工具」。

ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf

是開始一個偉大的方式,但我想我會建議O型賴利的書在這一個,如果你想花的錢。在VIM中獲取基礎知識很容易,但掌握它需要時間 - 但它們的收益是巨大的。

+0

我一直聽到來自'vim'和'emacs'倡導者的「巨大回報」的聲明,但我多年來與許多這樣的倡導者一起工作從來沒有見過這些說法被證實,因爲*編碼不是一個好的軟件開發人員所做的大部分*。 – 2010-06-22 14:24:49

+0

不夠公平,但是在文本編輯器和這個問題的背景下 - 編碼是一個好的軟件開發人員在文本編輯器中完成的工作。最後,使用什麼工具並不重要 - 如果你瞭解它們,它們將會很好地爲你服務。對我來說,收益是巨大的,我在編輯中的時間比以前更有效率。我真的很需要你。 – 2010-06-22 14:51:36

+0

對於我而言,癡迷於編輯的程序員與迷戀輪胎儀表的機械師相似。力學*做*使用輪胎測量儀,但檢查輪胎壓力不是他們工作的主要部分。扳手和其他東西比輪胎壓力錶更重要。當我編程時,輸入代碼是我花費的少數時間(即使使用我的「低效」工具)。如果我花了十年的時間學習'vim'的每一個角落,可能編碼*會更有效率。因爲那不是我花時間在那裏度過的時間,爲什麼呢?我還有其他需要花時間學習的東西(比如API,庫和語言)。 – 2010-06-22 15:24:15

相關問題