2013-10-03

[完全用 GNU/Linux 工作] 11. Hacking Vim

Vim 是功能完整且強大的文字編輯器 (Text Editor,以下簡稱 Editor),相信接觸過 GNU/Linux 的伙伴都曾接觸過。相信不少人對於它的印象就如同 COSCUP 2011 的經典名句「第一次用 vi 時進的去出不來」一樣,不過凍仁相信,只要事先做過些功課,便可習得第一成的功力,待大成後,其帶來的便利性是其他的 Editor 難以取代的!

write 11.hacking-vim.md with Vim.
▲ 使用 markdown 語法撰寫鐵人賽文章的截圖。
視窗切割及 CtrlP 火力展示,其怖景主題為 fu

我們除了可以在終端機輸入 vimtutor 取得 Vim 使用手冊,也可於網際網路上取得不少資源。

2013-09-28-vim-learning-curve.png
▲ Vi 學習曲線圖。

Vim 命令圖解
vgod 匯整的 Vim 入門圖解說明

土法煉鋼快速移動加強技巧使用套件 (plugin)打造屬於自己的 Vim 前後得花了不少的時間及心力,但我們可以在各個平台 (Android, GNU/Linux, iOS, Mac OSX, Windows)、軟體 (Bash, Chrome, Firefox, MySQL, Python, vifm, Visual Studio, w3m) 以及網路服務 (Facebook, Gmail) 中發現它的影子,是個習得一招半式便可打遍天下無敵手的 Editor,對凍仁而言它是個很棒的投資!

部份的發行版本只會預載 Vi 而沒有 Vim,這時請手動安裝它。
[ jonny@wheezy ~ ]
# Debian, Ubuntu on Gnome, Unity
$ sudo aptitude install vim-gnome Enter

# Debian, Ubuntu on KDE, Evilwm
$ sudo aptitude install vim-gtk Enter

# CentOS, Fedora
$ sudo yum install vim-X11 Enter

1. 凍仁 vim


如想取得凍仁完整的 vim 環境設定 (vimrc),請參考 凍仁的 GitHub

下載凍仁的環境設定。
[ jonny@wheezy ~ ]
$ git clone https://github.com/chusiang/vimrc.git Enter

切換目錄。
[ jonny@wheezy ~ ]
$ cd vimrc/ Enter

備份原設定。
[ jonny@wheezy ~ ]
$ make backup Enter

安裝。
[ jonny@wheezy ~ ]
$ make install Enter

開啟 Vim。
[ jonny@wheezy ~ ]
$ vim Enter
......
:NeobundleInstall Enter  # 安裝各式的 vim 套件。

以下設定可寫入 $HOME/.vimrc,這樣下次啟動 Vim 時設定才會存在。

1.1. 更換 fu 怖景主題

colorscheme fu

1.2. 使用 F5, F6 開啟當前編輯的網頁

" - local.drx.tw (PHP)
nnoremap <F5> :silent update<Bar>silent !firefox %:p:s?\(.\{-}/\)\{4}?http://local.drx.tw/?<CR>

" - current file (Ex: html, txt)
nnoremap <F6> :silent update<Bar>silent !firefox %:p &<CR>

2. 常用指令


2.1. 內文取代

  • s: 取代。
  • g: 對該行所有的字元進行處理。
  • c: 檢查。

全文取代。
:%s/old_world/new_world/gc Enter

取代第 5 ~ 10 行。
:5,10s/old_world/new_world/gc Enter

2.2. 啟用貼上模式

若有設定自動縮排 (set hls),在貼上程式碼時會有走山的情形,這時可以先切換成貼上模式再貼上。
:set paste Enter

2.3. 比對檔案差異

稱職的系統管理者是勤於備份的,在更動設定檔 (conf) 前一定會先複製一份。在眾多版本中的難以使用肉眼查覺出差異,這時可用 diff, Vim 或 Meld 來比對。

在 Vim 底下時,請使用 :diffsplit。
[ jonny@wheezy ~ ]
$ vi <file1> Enter
...
:diffsplit <file2>

在 bash 底下時,請使用 vimdiff。
[ jonny@wheezy ~ ]
$ vimdiff <file1> <file2> Enter

2.4. 將內容轉成 HTML

:TOhtml 會產生與 Vim 上一模一樣的 html,對於想用網頁秀出程式碼的人是必備的功能 (範例) 。
[ jonny@wheezy ~ ]
$ vi /usr/local/bin/powersave Enter
......
:TOhtml Enter

Vim 是個有門檻的文字編輯器,但凍仁相信只要用對方法,一步一步前進就可以早日駕馭它。建議初學者可以先套前人的 vimrc,並試著修改它,不懂的部份只要 Google 一下相信可以找到不少的解答。
Happy hacking !

本文同步發佈於 iT 邦幫忙

相關連結:
Vim Hacks (OSSF) | c9s
008 vim超基礎入門 | 小 B
心得:使用 Vim 編輯器的第一年
給程式設計師的 Vim 入門圖解說明 | vgod's blog
Vim 功能介紹 | 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
鳥哥的 Linux 私房菜 -- vim 程式編輯器
大家來學VIM(一個歷久彌新的編輯器)