首页 > > > vim使用手册.pdf

vim使用手册.pdf

vim使用手册.pdf

上传者: 尘归尘 2011-10-12 评分1 评论0 下载54 收藏10 阅读量334 暂无简介 简介 举报

简介:本文档为《vim使用手册pdf》,可适用于常用软件领域,主题内容包含大家來學Vim一個歷久彌新的編輯器李果正EdwardGJLeeEmail:edtinfosayyaorg年月日目錄目錄i進來先看看為什麼選Vim?何符等。

大家來學 Vim 一個歷久彌新的編輯器 李果正 Edward G.J. Lee Email: edt1023@info.sayya.org 2005年 2月 19日 目 錄 目 錄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i 1 進來先看看 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 為什麼選 Vim ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 何處抓 Vim(elvis)? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 編譯安裝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.1 Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.2 elvis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.3 nvi-m17n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 勤前教育 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.1 常態模式(Normal mode). . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.2 插入模式(Insert mode) . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.3 命令列模式(Cmdline mode or Command-line mode) . . . . . . . . . . . . 4 1.4.4 反白模式(Visual mode) . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4.5 選擇模式(Select mode) . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4.6 Ex 模式(Ex mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5 基本教練:step by step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.1 由命令列來開檔 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.2 先進入 vim 後再開檔 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.3 編寫文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5.4 存檔、離開 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 游標的移動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1 基本的游標移動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 進階的游標移動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 特殊的移動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 基本編輯指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1 五種額外模式(additional mode) . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.1 操作等待模式(operator-pending mode). . . . . . . . . . . . . . . . . . . 10 3.1.2 取代模式(replace mode). . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.3 插入常態模式(insert normal mode). . . . . . . . . . . . . . . . . . . . . 11 3.1.4 插入反白模式(insert visual mode) . . . . . . . . . . . . . . . . . . . . . 11 3.1.5 插入選擇模式(insert select mode) . . . . . . . . . . . . . . . . . . . . . 11 i 目錄 目錄 3.2 進入插入模式的指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 刪除指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.4 取代及還原 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.5 加上數目字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.6 簡單重排功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4 複製(yank) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.1 指令說明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.2 Register 緩衝區 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.1 register 的種類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3 天大的指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.4 疑難雜症 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.4.1 那 mouse 中鍵的剪貼功能還有嗎? . . . . . . . . . . . . . . . . . . . . . . 18 4.4.2 軟體間互相 copy 時,常常都搞得天下大亂耶! . . . . . . . . . . . . . . . . . 18 5 搜尋、替換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.1 搜尋 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.2 更方便的搜尋操作(Vim 才有) . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.3 替換(substitute) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.4 書籤功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.5 Vim 對於書籤的擴充功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.5.1 小寫英文字母 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.5.2 大寫英文字母 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.5.3 阿拉伯數目字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.5.4 :marks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6 叫檔、存檔、緊急回復 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.1 開檔的一些花招 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.2 多檔編輯 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.3 離開 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.4 Vim 的加密功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6.4.1 vim -x [檔名] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6.4.2 進入 vim 編輯檔案中,可用 :X 指令 . . . . . . . . . . . . . . . . . . . . . . 25 6.5 緊急回復 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7 各種標示方法及視窗操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.1 標示指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 7.2 視窗操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8 shell 命令及求助系統 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 8.1 shell 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 8.2 求助系統 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ii 目錄 目錄 9 set 功能設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 9.1 該在何處設定呢? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 9.1.1 Vim 的設定檔 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 9.1.2 elvis 的設定檔 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9.1.3 nvi-m17n 的設定檔. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9.2 如何得知目前的設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9.3 各種 set 功能說明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 9.4 關於 softtabstop[sts] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 9.5 Vim 的 modeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 9.6 關於折行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 9.7 我的設定檔 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 9.7.1 .vimrc 範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 9.7.2 .gvimrc 範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 9.7.3 .vim 目錄範例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 10 規則表示式的運用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 10.1 基本的匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 10.2 中介字元(metacharacter, or character classes) . . . . . . . . . . . . . . . . . 46 10.3 全域性的指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 10.4 & 替代變數 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 10.5 greedy 陷阱 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 11 把 Vim 折疊(folding)? . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.1 手動折疊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.1.1折疊的產生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 11.1.2折疊的操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.1.3折疊的記憶 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.2 自動折疊 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11.2.1以縮行為依據 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 11.2.2以特殊的表示法為依據 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 11.2.3以語法為依據 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 11.2.4以是否更改過為依據 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 11.2.5以文件上的標誌為依據 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 12 Vim tags 的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 12.1 各種程式碼專用 tag 工具. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 12.2 tags 檔案的格式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 12.3 tag 檔案的製作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 12.4 一般的 tag 使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 iii 目錄 目錄 12.5 Vim 線上說明文件的製作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 12.5.1 doctags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 12.5.2由 Vim 裡頭作線上說明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 13 Vim script 簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 13.1 一些簡單的 macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 13.1.1按鍵對應. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 13.1.2縮寫對應. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 13.1.3定義新命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 13.1.4新命令的屬性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 13.2 Vim script 的語法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 14 Vim 和其他軟體的配合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 14.1 和郵件、新聞軟體的配合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 14.1.1 mutt + vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 14.1.2 slrn + vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 14.2 和編譯程式的配合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 14.3 和 TEX/LATEX 的配合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 14.4 和 Java 的配合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 15 Vim tips 集錦 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 16 GNU 自由文件許可證原文 . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 授 權 聲 明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 參 考 資 料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 索 引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 iv 第 1 章 進來先看看 鑑於仍有許多人還沒找到順手的編輯器,而許多想學 vi的人又覺得無從下手,因此在此提出一 些個人的心得,希望能對這些朋友有點幫助。或許也減少一點 FAQ吧! 真要深入的話,大多數的前輩都認為 vi 比 emacs/xemcas 還難學。但誰又真的需要熟悉編輯 器的所有功能呢?你大可以邊用邊學啊!需要用到的先學,其它的就放一邊,只要能善用一些常 用到的功能,又何必要那麼深入呢?而且您在使用當中經常會發現一些新功能,這又會馬上讓您 給賺到了。 1.1 為什麼選 Vim ? 最最重要的原因是可以正確處理中文!其它如 elvis, vile, nvi在中文方面都會有問題(nvi-m17n 的版本已可以正確處理 Big5中文,但功能仍不及 Vim1 完整)。另外就是許多作業系統都有 Vim 可用。當然如果您不需要中文支援的話,也建議使用 elvis2。vile則有 emacs的味道,而 nvi 大概是最忠於原味的了!至於原始 vi 的書已有中文翻譯(O'Reilly),各位到大一點的書局翻 翻就有了。所以選定 Vim做對象,兼述及 elvis,至少她不「排斥」中文。3 另一個原因,Vim 不僅是自由軟體(Free Software4),也是慈善軟體(CharityWare5), 如有贊助或評比得獎(幾乎是年年最佳編輯器獎 :),所得皆救助烏干達 AIDS 孤兒。 您要使用當然是免費,您要捐款贊助當然是不勉強啦!但如果有評比有獎金可拿的, 1VIM代表 Vi IMproved 2elvis 可直接讀 HTML(可用來上網,但只有文字),binary、manpage 及 TEX/LATEX 檔(會自動去除一些指 令!),但不能真正「處理」中文就是了! 3Vim也不是真的能完全支援中文啦!有些細部的功能還是沒法度。但 Vim的發展群非常的活躍,一直都在改進 中。平常一般的編輯動作應該是沒什麼問題。 4什麼是自由軟體?請參考:http://www.gnu.org/philosophy/free-sw.html。 5請參考在荷蘭的基金會網頁:http://iccf-holland.org。 1 第 1章進來先看看 1.2. 何處抓 VIM(ELVIS)? 您去投她一票就是功德無量了。另外,如果想網路購書,可以透過 ICCF 的網頁 http: //iccf-holland.org/click.html 來訂購,這樣 Amazon 會付一些贊助金給 ICCF,完全 不會多花您一毛錢。 另外 Vim 的規則表示式(regular express)頗完整,您也可借這個機會學 regexp,因為您在 sed, awk, perl, less, grep. . .中也是要用到,早點習慣 regexp,您生活在 Linux(Un*x)的世界 會更美好。學了 regexp您會有點看不起Windows系統中的找尋工具的。 由於是慈善軟體,廣結善緣,因此連中文繁體都支援,不簡單。但也因此最近的版本有點肥,但 又不會太肥(比 xemacs好多了啦!)。這麼可愛的軟體,能不用她嗎? 1.2 何處抓 Vim(elvis)? http://www.vim.org/ http://vim.sf.net/download.php ftp://ftp.vim.org/pub/vim/ 找個自己中意的mirro站抓。或許也順便抓Win32的可執行檔回來在 windows系統中使用。 別忘了 runtime檔也要抓,否則會無法找到需要的檔案來執行。 http://elvis.the-little-red-haired-girl.org/ 也可試試 elvis(當然也是自由軟體)。 ftp://ftp.cs.berkeley.edu/ucb/4bsd/ ftp://ftp.foretune.co.jp/pub/tools/nvi-m17n/ nvi-m17n也可以一試,目前已可以支援中文。 目前最新的版本,Vim 是 6.1,elvis 是 2.2h-beta,nvi 是 1.79。當然,本文的重點是放在 Vim。 1.3 編譯安裝 只講重點,避免囉嗦! 2 第 1章進來先看看 1.3. 編譯安裝 1.3.1 Vim 1. configure 時加上: --enable-multibyte --enable-xim --enable-fontset --enable-gui=gtk --enable-perlinterp 需嵌入 perl 的話 --enable-pythoninterp 需嵌入 python 的話 GUI 可有好幾種選擇,但建議使用 gtk+,比較穩定。 2. ~/.vimrc 加入: set enc=big5 set guifontset=英文字型,中文字型 設了 guifontset 就不能設 guifont 否則會優先使用 guifont,這樣就找不到中文字型了!console 下或 xterm 下的話,就看您用什麼字型就顯示什麼字型,和 guifontset 無關。 英文字型要用固定字,我個人的實際設定例子(1024x768): set guifontset=-b&h-*-medium-r-normal-*-*-120-*-*-m-*-*-*, \-arphic-*mingti2l*-medium-r-normal-*-*-190-*-*-c-*-big5-0 Windows 中文版無需設 guifontset,只要設 guifont 即可。而且他 的設定檔是 \Program Files\Vim\_vimrc。例如: set guifont=Andale_Mono:H11:W6 或 set guifont=細明體:H11:W6 對於 UTF-8 編碼的文件,可能需要指定「細明體」才能正確顯示中文。 3. locale 要設成 zh_TW.Big5,意思就是您的系統的 i18n 支援要完整,我個人的設定如下: unset LC_ALL export LC_CTYPE=zh_TW.Big5 1.3.2 elvis elvis 沒什麼好說的,GUI 版本要靠靠 XA+CV 來顯示及輸入中文,因為他還不支援 i18n/XIM。但在 console/rxvt 下則可以顯示、輸入中文。至於其他外觀調整,就請 man elvis。 3 第 1章進來先看看 1.4. 勤前教育 1.3.3 nvi-m17n nvi 是在 *BSD 系統的標準配備,m17n(multilingualization, 取前 m 及後 n 及其中的 17 個 英文字母,合成 m17n) 則是日本朋友修改的版本,目前也可以用於中文,如果您系統上也有 nvi-m17n的話,可以設定 /.nexrc如下: set noskipdisplay set displayencoding=big5 set inputencoding=big5 set fileencoding=big5 set autodetect=tw 1.4 勤前教育 Vim的基本模式(basic mode)可有六種: 1.4.1 常態模式(Normal mode) 您一進入 vim 就是處於這常態模式,只能下按鍵指令,不能輸入編輯文字。這些指令可能是游 標移動的指令,也可能是編輯指令或尋找替換指令。 1.4.2 插入模式(Insert mode) 按 i就會進入插入模式,此時才可以鍵入文字,寫您的文章,按 Esc又會回到正常模式。此時在 狀態列會有 INSERT 字樣。 1.4.3 命令列模式(Cmdline mode or Command-line mode) 按冒號:(別忘了 Shift 鍵)就會進入命令列模式,左下角會有一個冒號:出現可下 ex6指令。也 是按 Esc 回命令列模式。反正正常狀態都是處於常態模式,這樣才不會把您辛苦打字的文章給 隨便搞亂掉。搜尋時的 /及 ?按鍵也是屬於命令列模式。 6vi, ex, sed都是衍化自 ed。ed是一個很古老的行編輯器,就好像 DOS下的 edline一樣。當然 DOS下的 edline也是學 ed而來的,但功能可就不能同日而語了!有興趣可man ed學看看,有些時候會只有 ed可以用(當 機救助的時候)。ex的操作和 ed,除了多了個冒號外,幾乎是一樣的。 4 第 1章進來先看看 1.5. 基本教練:STEP BY STEP 1.4.4 反白模式(Visual mode) 這就是把需要處理的文字反白起來,等待處理的模式,底部狀態最會有 VISUAL 或 VISUAL LINE 或 VISUAL BLOCK 字樣。詳細會在第 7章,頁 26,做介紹。 1.4.5 選擇模式(Select mode) 和反白模式的異同待瞭解。 1.4.6 Ex 模式(Ex mode) 這和命令列模式是一樣的,但下了命令後不會返回,會留在行編輯器 ex的狀態,有一個冒號在 那兒,等待輸入命令。由 gQ按鍵可以進入 Ex模式,輸入 visual可以返回正常模式。 其它還有五種的額外模式(additional mode)!這裡不準備說明,會在第 3.1節,頁 10做介 紹。反正,使用 Vim的無上心法就是,有問題先考慮按 Esc鍵回到常態模式再說。 1.5 基本教練:step by step 1.5.1 由命令列來開檔 vim test.txt 或 gvim test,txt,如果您的系統 vi 是 vim 的連結檔話,就可以直接用 vi test.txt。以下就直接用 vim 代表 vi,gvim,elvis,因操作是一樣的有不同的地方會加注 說明。 1.5.2 先進入 vim 後再開檔 進入 vim後,使用冒號命令 :e test.txt,就可以編輯 test.txt這個檔。第 1.5.1小節及第 1.5.2 小節這兩個開檔法,如果 test.txt 不存在的話,就會開一個以 test.txt 為名的新檔 案。 如果是 gvim,可由 icon(gtk版本才有)或功能表來叫出 le browser來選看看您要編輯哪一個 5 第 1章進來先看看 1.5. 基本教練:STEP BY STEP 檔,但如果您是初學的話不建議您這麼做,vi 就是以按鍵快速聞名,這是她的優點,您還是學 起來吧,不然沒有 GUI的時候會很不習慣的。 1.5.3 編寫文件 進入 vim後,按 i進入插入模式,就可以編寫您的文件了。在 vim游標的移動可以由方向鍵來 移動。Backspace鍵可消去前一個字元,中文的話是一個中文字。Del鍵可刪除游標所在處的字 元(中文字)。 原始 vi是不能在插入模式隨意移動游標的,得進入正常模式才能移動,因此就常常要按 Esc來 變換模式。vim及 elvis都打破了這個規矩。 1.5.4 存檔、離開 如果您寫好您的文件,就可以按 Esc回到正常模式,然後 :w就會存檔(注意,是冒號命令), 但還不會離開 vim,要離開可按 :q,就可以了!也可以合起來用,:wq,就樣就會存檔後離開。 怎麼樣,也不會很難吧!只不過操作方式和別的編輯器不一樣罷了,這樣豈不是很有個性。:-) 盡量記住按鍵的意義,才不必死背,如 e是 edit(編輯),w是 write(寫入),q是 quit(停止、離 開)。 這裡要提醒大家一下,許多 distributions中會編譯一個小型的 vim,啟動會比較快一點,但缺 乏許多本文要用到的功能,因此,建議您使用 vim/gvim,而暫時避免使用 vi,或者就把 vi 直接連結到正常的 vim上去。Slackware Linux的話,他的 vi是連結到 elvis的,也請使用 vim/gvim為指令,或改變 vi的連結。而 *BSD系統,使用的很可能就是 nvi,這些請使用時 注意一下,以免和文中內容所述不符。 如果不確定自己是使用哪一種版本的 vi,可以進入 vi 後按冒號 : 後再輸入 ver,然後按 Enter,就會得知是哪一種版本的 vi,如果是 vim 的話,還會顯示前有 +/–號的各功能,有 + 號的,表示有編譯進去,–號的表示沒有這項功能。 好了,這是就編輯的整個過程。下回開始是詳述各部份的功能,把 Vim解剖開來講,您可以馬 上現學現賣。由於 vi/vim的操作方式很有個性,因此,用了一次就會記住有這麼一個功能,想 忘也忘不了,但有時按鍵難免會忘記,有這麼一種功能大概是忘不了的,查了幾次指令就可以記 得住了。 6 第 2 章 游標的移動 本節所述皆是在 common-mode(c-mode,在 Vim又名 normal-mode,就是剛進入 vim,不 能輸入文字的狀態)下的移動,原始的 vi只能在 c-mode移動游標,在 insert-mode只做文字的 輸入,而不做游標的移動。當然 Vim及 elvis的方向鍵是不論在那一種mode皆可移動自如。 2.1 基本的游標移動 h 左,或 Backspace或方向鍵。 j 下,或 Enter或 +(要 Shift鍵),或方向鍵。 k 上,或方向鍵或 –(不必 Shift鍵)。 l 右,或 Space或方向鍵。 Ctrl+f 即 PageDown翻頁(Forward,向前、下翻頁)。 Crtl+b 即 PageUp翻頁(Backward,向後、上翻頁)。 使用 hjkl 鍵的移動是為了使手不必離開打字區(鍵盤中央的部位),以加快打字的速度,如果 各位不習慣,那就使用方向鍵吧!其實,一旦習慣了以後,對於編輯工作的效率會有很大的幫 助,而且有許多工作站的 vi只能使用 hjkl的移動方式,因此可能的話,盡量熟悉 hjkl的游標移 動。 Backspace及 Space的移動方式是到了行首或行尾時會折行,但方向鍵或 hl鍵的移動則在行 首或行尾時您繼續按也不會折行。轉折換行的功能是 Vim的擴充功能,elvis無此功能。 jk 及使用方向鍵的上下移動游標會盡量保持在同一欄位。使用 Enter,+,–的上下移動,游標 會移至上(下)一行的第一個非空白字元處。 好像有點複雜,各位就暫時使用方向鍵來移動就簡單明白了!等您愛上了 Vim後再來講究吧。 7 第 2章游標的移動 2.2. 進階的游標移動 2.2 進階的游標移動 0 是數目字 0而不是英文字母 o。或是 Hmoe鍵,移至行首,(含空白字元)。 ˆ 移至行首第一個非空白字元,注意,要 Shift鍵。 $ 移至行尾,或 End鍵。要 Shift鍵。 G 移至檔尾(全文最後一行的第一個非空白字元處) gg 移至檔首(全文第一行之第一個非空白字元處)。 在規則表示式(regular expression)中,ˆ是匹配行首,$是匹配行尾。 gg是Vim的擴充功能,在 elvis或原始 vi中可用 1G來移至檔首(是數字 1不是英文字 l)。G 之原意是 goto,指移至指定數目行之行首,如不指定數目,則預設是最後一行。 w 移至次一個字(word)字首。當然是指英文單字。 W 同上,但會忽略一些標點符號。 e 移至後一個字字尾。 E 同上,但會忽略一些標點符號。 b 移至前一個字字首。 B 同上,但會忽略一些標點符號。 H 移至螢幕頂第一個非空白字元。 M 移至螢幕中間第一個非空白字元。 L 移至螢幕底第一個非空白字元。這和 PageDown,PageUp 不一樣,內文內容並 未動,只是游標在動而已。 n| 移至第 n個字元(欄)處。注意,要用 Shift鍵。n是從頭起算的。 :n 移至第 n行行首。或 nG。 2.3 特殊的移動 ) 移至下一個句子(sentence)首。 ( 移至上一個句子(sentence)首。sentence(句子)是以 . ! ? 為區格。 } 移至下一個段落(paragraph)首。 { 移至上一個段落(paragraph)首。paragraph(段落)是以空白行為區格。 % 這是匹配 {},[],()用的,例如游標在 {上只要按%,就會跑到相匹配的 }上。 8 Administrator 文本波浪线工具 第 2章游標的移動 2.3. 特殊的移動 另還有一些 Vim的特殊按鍵,但這得留待最後再來說明,否則各位恐怕會頭昏眼花了。 9 第 3 章 基本編輯指令 這個單元就開始進入主題了。下編輯指令都是在常態模式,就是您一進入 Vim時的模式,只能 下指令,不能鍵入文字。如果印象模糊,請瞄一下第一個單元的內容。這個單元說的是基本的編 輯指令,有些比較特殊的編輯指令,因為太有個性了,所以會獨立成一個單元來說明。 3.1 五種額外模式(additional mode) 這裡要對基本模式(請參考第 1.4節,頁 4)外的五種額外模式做介紹,以下的章節會有機會碰 上。為什麼會有這麼多模式?這樣豈不是很易就搞混?其實一般編輯不必太在意一些模式,您只 要在各種模式下親自去操作幾次就會知道這些模式的作用,不必特意去記憶他,這些模式和基本 模式都有連帶關係的。 3.1.1 操作等待模式(operator-pending mode) 這其實和一般的常態模式一樣,只不過是指在常態模式下了某些編輯指令,等待其他動作的狀 態。 3.1.2 取代模式(replace mode) 指下 R指令時所處的狀態。請參考第 3.4節,頁 12。在狀態列會有 REPLACE 字樣。 10 第 3章基本編輯指令 3.2. 進入插入模式的指令 3.1.3 插入常態模式(insert normal mode) 這是一個很特殊的模式,在插入模式時,進入輸入狀態,但按 Ctrl+O就會進入插入常態模式, 和常態模式一樣,只不過執行完所下的指令後又會馬上返回原來的插入模式繼續輸入文字。狀態 列會有 (insert) 字樣,是小寫有小號的。 3.1.4 插入反白模式(insert visual mode) 這和插入常態模式一樣,只不過在按 Ctrl+O後所執行的是反白的 Ctrl+V或 V或 v而進入反白 模式,等反白模式結束又會返回原來的插入模式。狀態列會有 (insert) VISUAL 字樣。 3.1.5 插入選擇模式(insert select mode) 這和插入反白模式一樣,只不過進入的是選擇模式,而非反白模式。狀態列會有 (insert) SELECT 字樣。 3.2 進入插入模式的指令 i 在游標所在字元前開始輸入文字(insert)。 a 在游標所在字元後開始輸入文字(append)。 o 在游標所在行下開一新行來輸入文字(open)。 I 在行首開始輸入文字。此之行首指第一個非空白字元處,要從真正的第一個字元處 開始輸人文字,可使用 0i或 gI(Vim才有)。 A 在行尾開始輸入文字。這個好用,您不必管游標在此行的什麼地方,只要按 A就會 在行尾等著您輸入文字。 O 在游標所在行上開一新行來輸入文字。 J 將下一行整行接至本行(Joint)。 並無相對的 split功能,可在插入模式下按 Enter來達成,當然如果您熟 macro的話,可自行 定義。使用 J 時,預設會消去本行的 EOL(End Of Line) 字元,且上下行接縫間會留下一個空 白字元,這符合英文習慣,卻對中文會造成困擾,欲不留空白字元,可使用 gJ(大寫 J)指令, 但這是 Vim 的擴充功能,elvis 不適用。要和中文相容,可參考底下會說明的重排功能的 Vim 11 第 3章基本編輯指令 3.3. 刪除指令 script。請您隨便找一個檔案來試看看,光看文字說明太抽象了。 3.3 刪除指令 x 刪除游標所在處之字元,在中文指一個中文字。在 Vim及 elvis亦可用 Del鍵。 X 刪除游標前之字元。不可使用 Backspace鍵,除非是在插入模式。Vim可以正確 使用以上兩個指令於中文,會刪去一個中文字。elvis 則不行,一個中文字要刪兩 次,即使用 xx。 dd 刪除一整行(delete line)。 dw 刪除一個字(delete word)。不能適用於中文。 dG 刪至檔尾。 d1G 刪至檔首。或 dgg(只能用於 Vim)。 D 刪至行尾,或 d$(含游標所在處字元)。 d0 刪至行首,或 dˆ(不含游標所在處字元)。請回憶一下 $及 ˆ所代表的意義,您就 可以理解 d$及 dˆ的動作,這就是 vi(m)可愛之處。 3.4 取代及還原 r 取代游標所在處之字元。 R 進入取代模式(replace mode),取代字元至按 Esc為止。 cc 取代整行內容。或大寫 S亦可。 cw 替換一個英文字(word),中文不適用。(change) ˜ 游標所在處字元之大小寫互換。當然不能用於中文。別忘了 Shift! C 取代至行尾,即游標所在處以後的字都會被替換。或 c$。 c0 取代至行首,或 cˆ。 s 替換一個字元為您所輸入的字串。和 R不同,R是覆蓋式的取代,s則是插入式的 取代,您可親自實驗看看。ㄟ!是小寫的 s。 u 這個太重要了,就是 undo,傳統的 vi 僅支援一次 undo,Vim 及 elvis 就不只 了,Vim幾乎是沒有限制的。 U 在游標沒離開本行之前,回復所有編輯動作。 Crtl+r 這個也是很重要,就是 redo鍵。 12 第 3章基本編輯指令 3.5. 加上數目字 Vim很有個性的,您在常態模式按了 r她就會停在那裡等主人鍵入所要替代的字元,希望您這個 當主人的,不要傻呼呼的也楞在那裡,趕快鍵入您的新字元吧!:-) Vim中可用於中文字,也就 是可以替換一個中文字,elvis則不行。當然您的 Vim是要設在 big5/cp950的才行。怎麼樣! 有沒有看過如此有個性的取代方式?ㄚ!r就是 replace啦! 3.5 加上數目字 喔!騷到 Vim 的癢處了,這是 Vim 一個非常騷包的功能,只此一家別無分號(當然同源的 ed,sed等不在此限)。就是您可以在大部份的指令前加上數目字,代表要處理幾次的意思。以 下用實例來說明比較清楚。 5dd 刪除游標所在處(含)起算以下五行內容。妙吧! 3r 按了 3r 後,您鍵入一個英文字,則三個字元皆會被您所鍵入的英文取代。只要

编辑推荐

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料

资料评价:

/ 83
所需积分:1 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!