VIM(1)

名稱
vim - Vi IMproved, 一個程式設計師的文本編輯器

概述
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]

ex
view
gvim gview evim eview
rvim rview rgvim rgview

描述
Vim 是一個同 Vi 向上相容的文本編輯器。 它可以用來編輯任何純文本。 它特別適合用來編輯程式。

它對 Vi 作了許多增強：多層撤銷、多視窗、多緩衝區(buffer)、 高亮語法顯示、命令列編輯、檔名補全、線上幫助、可視選擇等等。 請用 ":help vi_diff.txt" 檢視 Vim 和 Vi 之間差別的摘要。

在執行 Vim 的時候，可以用 ":help" 命令獲得很多幫助資訊。 請參考下面的“線上幫助”一節。

通常情況下， vim 使用直接把檔名作為引數的方法來編輯檔案：

    vim 檔名

更通用地來說， Vim 使用下述方式從命令列啟動：

    vim [選項] [檔案列表]

如果沒有給定檔案，則編輯器會開啟一個空的緩衝區。 否則就會用下面四個中的一個方式來選擇要編輯的檔案。

檔案 ..
    檔名列表。 第一個會作為當前檔案讀入緩衝區。 游標會停在緩衝區的第一行。 您可以使用 ":next" 命令轉到其它的檔案。 如果要編輯一個以 "-" 開頭的檔案，請在檔案列表前面加上 "--"。

-   從標準輸入讀取要編輯的檔案。命令從標準錯誤讀取，此時標準錯誤應當是一個 TTY。

-t {tag}
    被 編輯的 檔案 和 游標的 初始位置 由 標記 (tag) 決定， 標記 有點像 一種 goto 標籤 (goto label). 在 標記檔案中 找到 標記, 相應的 檔案 成為 當前檔案, 相應的 命令 被執行. 這種方式 常用於 C 程式, 標記 就是 函式名, 當前檔案 就是 包含 那個函式的 檔案, 游標 停留在 函式的 開始處. 見 ":help tag-commands"。

-q [errorfile]
    執行時 進入 快速修復模式. 讀取 [errorfile] 檔案 並顯示 第一個 錯誤. 如果 沒有 [errorfile] 檔案, 檔名 由 'errorfile' 選項 決定 (在 Amiga 為 "AztecC.Err", 在 其他系統中 為 "errors.vim"). 可以 用 ":cn" 命令 跳到 其它錯誤處. 見 ":help quickfix"。

Vim 會 根據 不同命令 有 不同的 表現, 儘管 它們 可能 是 一個 可執行 檔案.

vim 正常 模式, 所有 都是 預設狀態.

ex  以 Ex 模式 執行. 用 ":vi" 命令 進入 正常模式. 也可以 加上 "-e" 選項 進入 此模式.

view
    以 只讀模式 執行. 你被禁止 寫檔案. 也可以 加上 "-R" 選項 進入 此模式.

gvim gview
    GUI 版本。 開啟 一個 新的視窗. 也可以 加上 "-g" 選項 進入 此模式.

rvim rview rgvim rgview
    同 上面的 相同, 只是 加上了 限制, 不能執行 shell 程式, 也 不能 暫停 Vim . 也 可以 加上 "-Z" 選項 進入 此模式.

選項 (OPTIONS)
所有選項 都可以 以 任何順序 出現, 可以 在檔名前, 也可以 在檔名後. 沒有 引數的 選項 可以 出現在 一個 "-" 後面.

+[num]
    對於 第一個 檔案, 游標 會停在 第 "num" 行. 如果 沒有 "num" , 則 游標 會停在 最後一行.

+/{pat}
    對於 第一個檔案, 游標 會停在 {pat} 第一次 出現的 地方. 搜尋 模式 見 ":help search-pattern"。

+{command}

-c {command}
    讀入 第一個 檔案後 會 執行 {command} 命令. {command} 應為 Ex 命令. 如果 {command} 中 包含有 空格, 必須 用雙引號 括住 (這個取決於所用的 shell). 例: Vim "+set si" main.c
    注意: 你 最多 可以用 10 個 "+" 或者 "-c" 命令.

-b  二進位制模式. 設定 一些選項, 這樣 就可以 用來 編輯 二進位制 和 可執行 檔案 了.

-C  相容. 設定 'compatible' 選項. 這樣 就算 存在 .vimrc 檔案 Vim 也會 基本上 象 Vi 一樣了.

-d {device}
    開啟 {device} 用作終端， 只在 Amiga 下。 例： "-d con:20/30/600/150".

-e  以 Ex 模式 執行 Vim ， 就像 執行 "ex" 一樣。

-f  前臺 執行。 對於 GUI 版本， Vim 不會 同執行它的 shell 分離。 在 Amiga 中， Vim 不會 重新啟動 來 開啟一個 新視窗. 這個選項 會用在當 Vim 被 另外一個 程式執行, 並且 這個程式 想等編輯動作 結束後 再執行 的 時候 (如 mail). 在 Amiga 上 ":sh" 和 ":!" 不會起作用.

-F  如果 Vim 編譯時 加入了 對 從右到左 書寫的 檔案 FKMAP 以及 Farsi 鍵盤對映 的支援, Vim 會 以 Farsi 模式 執行, 比如 設定 'fkmap' 和 'rightleft' 選項.不然 Vim 會 顯示 一條 錯誤資訊 並 終止.

-g  如果 Vim 編譯時 加入 GUI 支援, 會開啟 GUI, 不然 Vim 會 顯示 一條 錯誤資訊 並 終止.

-h  Vim 顯示 命令列 引數 和 選項的 幫助, 然後 終止.

-H  如果 Vim 編譯時 加入了 對 從右到左 書寫的 檔案 RIGHTLEFT 以及 Hebrew 鍵盤對映 的支援， Vim 會以 Hebrew 模式 執行, 比如 設定 'hkmap' 和 'rightleft' 選項. 不然 Vim 會 顯示 一條 錯誤資訊 並 終止.

-i {viminfo}
    准許 使用 viminfo 檔案, 這個 選項 設定 使用的 檔名, 預設的 是 "~/.viminfo". 用 "NONE" 檔名 也可以 跳過 使用 .viminfo 檔案.

-L  同 -r 一樣.

-l  Lisp 模式. 開啟 'lisp' 和 'showmatch' 選項.

-m  禁止 修改檔案. 設定 'write' 選項, 這樣 就不能 寫檔案了.

-N  非相容 模式. 設定 'compatible' 選項. 這樣 Vim 會 表現得 更好, 就算 .vimrc 檔案 不存在 也會 同 Vi 不相容.

-n  禁止 交換檔案, 這樣 在崩潰後 就 不能 恢復 檔案了. 對於 編輯 在很慢的 媒體中的 檔案 很有好處 (比如軟盤), 也可以 用 ":set uc=0" 禁止交換, 用 ":set uc=200" 開啟 交換.

-o[N]
    開啟 N 個視窗. 如果沒有 N, 為 每個檔案 開一個 視窗.

-R  只讀 模式. 設定 'readonly' 選項. 你 仍然 可以 編輯 緩衝區, 但是 不能 重寫檔案. 如果 你要 重寫檔案, 必須在 Ex 命令中 用驚歎號, 比如 ":w!". -R 選項 隱含了 -n 選項 (見下). 'readonly' 選項 可以 用 ":set noro" 設定. 見 ":help 'readonly'".

-r  列出 交換檔案, 顯示 關於 恢復檔案的 資訊.

-r {file}
    恢復 模式. 交換檔案 是 用來 恢復 在 編輯過程中 崩潰了的 檔案. 交換 檔名 是 被編輯檔名 後面 加上 ".swp". 見 ":help recovery".

-s  安靜 模式. 只在 用 "Ex" 啟動 或者 用了 "-e" 選項 才有用.

-s {scriptin}
    讀入 指令碼檔案 {scriptin}. 檔案裡的 字元 就像 你 直接 輸入 一樣的, 也 可以 用 ":source! {scriptin}" 命令 實現 這個功能. 如果 在 編輯器 結束前 就 讀到了 檔案尾, 就 接著 從鍵盤 讀入.

-T {terminal}
    告訴 Vim 你 用的 終端的 名字, 只有 當 不能 自動確定 的時候 才這樣. 它 必須是 Vim (builtin) 能辨認的 終端 或者是 在 termcap 或者 terminfo 檔案中 定義了的.

-u {vimrc}
    用 {vimrc} 檔案 裡的 命令 來初始化, 跳過 所有 其它的 初始化, 用 這個 來編輯 特殊型別的 檔案. 也可以 用 "NONE" 來 跳過 所有初始化. 在 vim 中 用 ":help initialization" 檢視 更多資訊.

-U {gvimrc}
    用 {gvimrc} 檔案 裡的 命令 來初始化 GUI, 跳過 所有 其它的 GUI 初始化, 也 可以 用 "NONE" 來跳過 所有 GUI 初始化. 在 vim 中 用 ":help gui-init" 檢視 更多資訊.

-V  冗長 顯示. 顯示 執行 初始化程式碼 和 讀入的 檔案, 並且 寫 viminfo 檔案.

-v  以 Vi 模式執行 Vim , 就像 執行 "vi" 一樣, 只有 執行 "ex" 時 才有用.

-w {scriptout}
    所有 在 Vim 退出前 你鍵入的 字元 都會被 存入 {scriptout} 檔案. 這 用來 建立一個 指令碼檔案, 你 可以用 "vim -s" 和 ":source!" 來使用. 如果 {scriptout} 存在, 會 把 字元 追加到 後面.

-W {scriptout}
    同 -w 一樣， 但是 是覆蓋 原來的檔案.

-x  寫檔案時 加密. 會提示你 輸入密碼.

-Z  受限 模式. 同執行 以 "r" 開頭的 程式 同效.

--  表明 選項結束. 在此之後的 引數 都會被認為 是 檔名, 可以 用這個 來編輯 一個 以 '-' 開頭 的檔案.

線上幫助 (ON-LINE HELP)
在 Vim 中鍵入 ":help" 來 獲得 幫助. 用 ":help subject" 來 獲得 關於 一個 特定主題的 幫助. 例如 用 ":help ZZ" 來 獲得 關於 "ZZ" 的幫助. 用 <Tab> 和 CTRL-D 來 完成 幫助主題 (":help cmdline-completion"). 可以 用 標記 從 一個地方 跳到 另一個 地方 (有點像 超文本連線, 見 ":help"). 所有的 文件 都可以 這樣 來瀏覽, 比如 ":help syntax.txt".

檔案

/usr/share/vim/vim80/doc/*.txt
    Vim 的文件檔案。 請使用 ":help doc-file-list" 獲得完整的列表。

/usr/share/vim/vim80/doc/tags
    在文件檔案中查詢資訊用的標籤檔案。

/usr/share/vim/vim80/syntax/syntax.vim
    系統層面的語法初始化檔案。

/usr/share/vim/vim80/syntax/*.vim
    各種語言的語法檔案。

/usr/share/vim/vimrc
    系統層面的 Vim 初始化檔案。

~/.vimrc
    您的個人 Vim 初始化檔案。

/usr/share/vim/gvimrc
    系統層面的 gvim 初始化檔案。

~/.gvimrc
    您的個人 gvim 初始化檔案。

/usr/share/vim/vim80/optwin.vim
    ":options" 命令所用的指令碼檔案，這是個檢視和設定選項的好方法。

/usr/share/vim/vim80/menu.vim
    系統層面的 gvim 選單初始化檔案。

/usr/share/vim/vim80/bugreport.vim
    用來生成錯誤報告的指令碼檔案。詳見 ":help bugs"。

/usr/share/vim/vim80/filetype.vim
    根據檔名來判定檔案型別的指令碼檔案。詳見 ":help 'filetype'"。

/usr/share/vim/vim80/scripts.vim
    根據檔案內容來判定檔案型別的指令碼檔案。詳見 ":help 'filetype'"。

/usr/share/vim/vim80/print/*.ps
    用於 PostScript 列印的檔案。

要了解最新資訊，請檢視 VIM 主頁：
<URL:http://www.vim.org/>

參見
vimtutor(1)

作者
Vim 的大部分都是 Bram Moolenaar 在很多人的幫助下完成的。 請見 vim 下的 ":help credits"。
雖然不大可能還有原始的程式碼存在, 但是 Vim 仍然是基於 Stevie 寫的程式碼，之後被 Tim Thompson、 Tony Andrews 和 G.R. (Fred) Walter 修改而成的。

缺陷
也許有吧。 請用 ":help todo" 檢視已知問題的列表。

請留意，有不少地方可能被其他人視為缺陷與錯誤， 但實際上這只是因為程式忠實地還原了 Vi 的行為操作。 如果你覺得有些地方“因為和 Vi 的行為不一樣”而應該是錯誤的， 也許你應該再仔細閱讀一下 vi_diff.txt 檔案（或者在 Vim 中輸入 "help vi_diff.txt"）。 您也應該查一查“compatible”和“cpoptions”選項的用法。

[中文版原維護人]
唐友 <tony_ty@263.net>

[中文版原最新更新]
2001/8/30

[原中國Linux論壇man手冊頁翻譯計劃]
http://cmpp.linuxforum.net

跋
本頁面中文版由中文 man 手冊頁計劃提供。

獲取日期：2016-12-14
翻譯日期：2016-12-18
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh