post

Vim zh-tw:簡介

Vim 是什麼東西?

Vim 是文字編輯器,可以讓你編寫任何種類的文字,無論是寫購物清單、寫書或是寫程式,都可以。

Vim 特別的地方是它有少數軟體具備的特色,簡單而強大

簡單意味著起步容易。有著極簡風的介面,你會只專注在你最重要的工作上,那就是寫作。簡單也意味著 Vim 建構在少許的核心概念上,讓你學習進階的功能時更輕鬆。

強大則代表能更快速、更容易地把事情做的更好,就是把不這麼簡單的事變得容易許多。不過強大並不是複雜的代名詞,而是“事倍工半”的意思。

Vim 可以做些什麼?

你大概會說 “所以不過是個文字編輯器罷了,到底有什麼了不起的?”

這個嘛…很了不起。

我們隨便來比較一下 Vim 和你現在用的編輯器,目的是要問你“你怎麼用目前用的編輯器做到這件事?”

注意
不要擔心不瞭解這些 Vim 命令,這裡只是想讓你知道這些可能性。至於解釋怎麼做到的就留給這本書剩下的章節。
問題 Vim 的作法
怎麼讓游標往下移七行?

7j

怎麼刪除一個單字? 沒錯,就是一個”單字”。

dw

如何在檔案中尋找現在游標所停留的單字?

*

要怎麼讓搜尋和取代的結果只套用在 50-100 行之間?

執行 :50,100s/old/new/g

如果想同時瀏覽同一個檔案的不同部份,該怎麼做呢? 執行 :sp 來 ‘分割’ 視窗
游標停留在一個檔名上,你想開啟該檔案,要怎麼做? gf (意思就是 ‘g’o to this ‘f’ile,開啟檔案)
如何改變色彩主題? 執行 :colorscheme desert 選擇 ‘desert’ 色彩主題(我的最愛)
要怎麼把 ctrl-s 對應到儲存檔案這個動作? 執行 :nmap <c-s>:w<CR>。留意 <CR> 指的是 ‘c’arriage ‘r’eturn 就是 enter 鍵。
要怎麼儲存 Vim 目前的環境設定,供日後繼續調整? 執行 :mksession ~/latest_session.vim,下次執行 Vim 時要下 vim -S ~/latest_session.vim 這個命令。
如果要語法高亮度顯示呢? 執行 :syntax on。假設如果沒有正確辨識使用的語言,舉例來說,可以執行 :set filetype=Wikipedia
你想把檔案中許多部份摺疊起來,好讓你一次只注意一小部份,要怎麼做? 假設你的檔案有正確縮行,執行 :set foldmethod=indent。 還有很多其他摺疊的方式。
那分頁瀏覽多個檔案呢? 執行 :tabedit <file>,在”分頁”(就像網頁瀏覽器的分頁一樣)中開啟多個檔案,執行 ctrl-pgup/ctrl-pgdn 來切換分頁。
你的文件裡有很常用到的字,下次碰到的時候想自動完成,該怎麼做? ctrl-n 會顯示”完成”目前單字可供選擇的清單,這是依據目前文件中你用過的所有單字。另一個方法是,執行 :ab mas Maslow's hierarchy of needs,之後只要你輸入m a s <space> Vim 就會自動幫你完成。
有一些資料每一行只有前十個字母你想要,其他不需要,要怎麼取得你要的? ctrl-v 選擇你要的內容,再按 y 複製選擇的行和列。
假設你從別人那兒收到一個惱人的文件,裡面都是大寫字母,要怎麼轉成小寫?

在 Vim 裡執行下面的命令:

:for i in range(0, line('$'))
:    call setline(i, tolower(getline(i)))
:endfor

別擔心,之後的章節會講細節。另外一個比較簡潔的方法是執行 :%s#\(.\)#\l\1#g,不過上面的方法比較容易想得到。

其實還有更簡單的方法,輸入 (1GVG) 選取所有的內容,然後按 u 來轉成小寫,不過還是一樣,這方法太容易了,展現不出 Vim 可以執行多個步驟的能力。

唷! 你相信了吧?

這些例子顯現出 Vim 在實際用途中的強大,其他的編輯器要達到相同程度的功能相當困難。而令人驚訝的是,這些功能都設計的讓人很容易理解。

注意到在這些例子裡我們一次都沒用到滑鼠!這樣是好事。你一天可以在鍵盤和滑鼠之間來回幾次?這樣你就能瞭解為什麼要極力避免這樣的行為。

不要這樣就被這些功能嚇到了。Vim 最棒的地方就是,你只需要瞭解一些基本概念就能有很大的成效。只要學會了那些基本的概念,一旦需要其他功能時很快就能上手。


Advertisements