跳到內容

學習 vi 編輯器/Vim/技巧和竅門

來自華夏公益教科書,開放的書籍,用於開放的世界

學習 vi 編輯器: 熟悉基本任務使工作更輕鬆高階任務詳細資訊Vi 克隆 (Vim基本導航模式技巧和竅門程式設計師需要了解的有用東西增強 VimVim 在 Windows 上VimL 指令碼語言, Vile, BB vi)vi 參考

Vim 技巧手冊是使用 Vim 文字編輯器 的技巧、提示和操作指南的集合。它是更靈活格式的 Vim 技巧資料庫 的衍生品,還包括來自 Vim 郵件列表 的一些有幫助的帖子。

有關 Vim 的一般使用資訊,請參閱 學習 vi 編輯器/Vim

關於本書

[編輯 | 編輯原始碼]

編輯技巧

[編輯 | 編輯原始碼]
  • 在可能的情況下,應避免廣泛的個人配置。將建議範圍限制在單個技巧內。您可能希望連結到幾個其他可能與之一起使用的技巧,就像烹飪食譜會建議搭配良好的菜餚一樣。
  • 始終提供足夠的資訊,以便可以使用 Vim 的預設 compatible 設定來使用技巧。

使用的約定

[編輯 | 編輯原始碼]
<c>
單個字元,例如“a”或“1”。
<ESC>, <Ctrl-[>
表示應按下鍵盤上的 Escape (Esc) 鍵,這與 Control 和 '[' 相同。
<CR>
表示應按下回車 (Enter) 鍵。
<TAB>
表示應按下 Tab 鍵
<Ctrl-x>, <C-x>
表示應同時按下 Control 鍵和“x”鍵。“x”幾乎可以是鍵盤上的任何其他鍵。
<Shift-x>, <S-x>, <X>
表示應同時按下 Shift 鍵和“x”鍵
<Meta-x>, <M-x>
表示應同時按下 Meta 或 Alt 鍵和“x”鍵。
:quit, :q
Ex 命令。以 <:> 開頭,後跟命令,最後以 <CR> 結尾。對於許多 Ex 命令,都有長格式 (:quit) 和短格式 (:q)。
:set nocompatible
表示設定。
strlen ()
表示函式。
/pattern/, ?pattern?
搜尋模式。vi 中的搜尋模式是 正則表示式
:ranges/search/replace/options, :global /pattern/ delete
搜尋模式與 Ex 命令相結合。

vi 中的所有命令都區分大小寫。


如果需要輸入一系列命令,這些命令可能會列在一個預格式化的塊中

 {{Vi/Ex|set}} {{Vi/set|number}}
 {{Vi/Ex|set}} {{Vi/set|textwidth=70}}
 {{Vi/Ex|set}} {{Vi/set|wrap}}
 

這將生成以下格式的文字

set number
set textwidth=70
set wrap

Vim 幫助

[編輯 | 編輯原始碼]

如果您是 vi 的新手,請嘗試 vimtutor 命令。它是一個針對初學者的優秀指南。

Vim 擁有一個龐大的幫助系統。涵蓋了所有內容。然而,這個系統非常龐大,以至於有時找到所需的資訊就像在一個巨大的乾草堆中找到自己的針一樣。但即使這樣,也有一些 Vim 工具

  • (假設 'nocompatible' 已經設定)
set wildmenu
  • 幫助標籤自動補全:如果您認為“foo”是幫助系統中包含超連結的某一部分,請使用
help foo<Tab>
其中 <Tab> 表示“按 Tab 鍵”,如果只有一個可能的補全,Vim 會為您填入;如果有多個,底部的狀態行將被替換為一個選單,可以透過按下 <Left> 和 <Right> 箭頭鍵進行導航;透過按下 <Enter> 接受選擇,透過按下 <Esc> 取消。
  • :helpgrep 函式:如果您認為某些正則表示式描述了您想要在所有幫助檔案文字中搜索的文字,請使用
helpgrep <pattern>
其中 <pattern> 是一個 Vim 正則表示式,就像您在 / 或 ? 後可以使用的那樣。Vim 可能需要一些時間來查詢所有幫助檔案,它可能會或可能不會顯示需要您按下 Enter 才能清除 |more-prompt| (q.v.) 的中間資訊。當閃爍的游標重新出現在您的編輯檔案中時,表示 Vim 已編譯所有幫助位置的列表,其中您的 regexp 匹配。使用以下方法檢視它們
 cfirst or :cr
 cnext or :cn
 cprevious or :cprev or :cN
 clast or :cla


從檔案或暫存器插入文字

[編輯 | 編輯原始碼]

如果您的文字在單獨的檔案中,您可以使用 :r 以及行號 (插入後的行的行號,或 0 表示“在第一行之前”,或 . 表示“在游標行之後”,或 $ 表示“在最後一行之後”;預設值為在游標行之後) 在“範圍”位置,即 r 之前。檔名作為引數放在最後。

示例 (在第 5 行之後)

  5r ~/template.txt

如果您的文字在暫存器中,您可以使用 :put 以及行號 (再次) 在範圍位置,並在 :put 後面加上暫存器名稱 (包括 ",對於預設暫存器,必須將其轉義為 \";或 + 表示系統剪貼簿)。

示例 (在游標行之前)

  .-1put \"

您還可以使用 :put 和直接賦值直接插入字串

  :put ='This is text to insert.'

參見

  :help :read
  :help :put

全屏模式

[編輯 | 編輯原始碼]

要在任何版本的 gvim 上實現全屏編輯視窗,您可以執行以下操作

  :set go-=m go-=T go-=l go-=L go-=r go-=R go-=b go-=F
  :set lines=999 columns=999
  • 'guioptions': 我們逐個刪除標誌以避免出現問題,即使它們以不同的順序出現在選項中,或根本沒有出現。透過選擇要刪除的標誌 (或不刪除),您可以自定義自己的“全屏 Vim”風格。
  m   when present, menu bar is present
  T   when present, toolbar is present on versions which support it (W32, GTK1, GTK2, Motif, Photon, kvim)
  l   when present, left scrollbar is always present
  L   when present, left scrollbar is present if there is a vertical split
  r   when present, right scrollbar is always present
  R   when present, right scrollbar is present if there is a vertical split
  b   when present, bottom scrollbar is present
  F   when present, gvim (Motif) will display a footer
  • 'lines', 'columns': 將它們設定為較大的值將最大化視窗。

有關更多資訊,請參閱

  :help 'guioptions'
  :help 'lines'
  :help 'columns'


學習 vi 編輯器: 熟悉基本任務使工作更輕鬆高階任務詳細資訊Vi 克隆 (Vim基本導航模式技巧和竅門程式設計師需要了解的有用東西增強 VimVim 在 Windows 上VimL 指令碼語言, Vile, BB vi)vi 參考

華夏公益教科書