跳轉至內容

學習 vi 編輯器/Vim/Vim Touch

來自 Wikibooks,開放世界中的開放書籍
有關 Vim 的一般資訊和歷史,請參閱其相應的維基百科文章
Vim Touch 的螢幕截圖。使用了 Slate 主題,底部顯示命令欄。

Vim Touch(也稱為VimTouch)是一個功能強大的文字編輯器,基於 Vim 移植到 Android 作業系統,該作業系統執行在超過 10 億臺裝置上,其中大部分是手機。

本教程介紹如何使用 Vim Touch,使用者可能立即需要的有用命令、使用者介面演練以及特定於移動裝置上 Vim Touch 的某些用例場景。

本教程對 Vim 初學者很有幫助,但也假設使用者對 Vim 有一定的瞭解,例如,已經瞭解基本知識但希望跳過大多數命令列表的使用者。雖然有用,但檢視完整的 Vim 命令列表對於希望立即使用 Vim 工作的初學者來說可能會讓人不知所措。

因此,也可以將其視為入門指南或簡易手冊。

使用說明和先決條件

[編輯 | 編輯原始碼]

需要一定的計算機操作能力,因為本教程不會涵蓋所有用例。

學習 Vim 及其常用命令的另一種選擇是在電腦上安裝 gVim。gVim(圖形化 Vim)在圖形環境中執行,並且可用於大多數計算機作業系統。在圖形化的 Linux 或 BSD 發行版中,gVim 可能已經安裝。
gVim 顯示一個傳統的選單欄,其中包含選單,這些選單包含最常用的命令及其對應的鍵盤快捷鍵。因此,gVim 可以作為直觀的視覺輔助工具。

Vim 中的命令區分大小寫,例如 gjgJ 執行不同的操作。這意味著,如果命令或其一部分以大寫形式顯示,則預設情況下應假定使用 Shift 鍵。在命令模式下,對於常規命令和基於冒號的命令,相同的字元可能意味著不同的含義。

Vim 本身的命令也可以在那裡使用。

可用性

[編輯 | 編輯原始碼]

Vim Touch 可從 Google Play 商店和F-Droid(免費和開源 (FOSS) 應用的應用儲存庫)獲取。F-Droid 有自己的“商店”應用,可以從其儲存庫以及使用基於 F-Droid 的基礎設施的其他儲存庫下載 FOSS 應用。

建議與 Vim Touch 配合使用的虛擬鍵盤應用是 Hacker's Keyboard,因為它在第一個鍵盤螢幕上顯示了所有必要的按鍵,這些按鍵在傳統 Android 鍵盤的主螢幕上是缺失的。Hacker's Keyboard 應用也可從 F-Droid 儲存庫獲取。

對於大量工作,建議使用藍牙鍵盤。

Vim Touch 的特性

[編輯 | 編輯原始碼]

作為一個基於文字的應用,VimTouch 利用文字命令和大量鍵盤操作。VimTouch 透過擁有自己的選單、跨螢幕的觸控式移動以及用於常用命令的可自定義命令欄來改進這一點。

與 Android 中的大多數文字編輯器不同,Vim Touch 作為一項服務啟動。這有很多優點,因為它可以防止使用者在基本文字編輯器中頻繁儲存檔案並重新啟動應用的情況,如果他們在另一個應用中進行多工處理,並且基本文字編輯器在此期間已退出。這種情況在 RAM 記憶體不足的裝置中經常發生。

應用選單和命令欄

[編輯 | 編輯原始碼]

按下手機上的硬體或虛擬選單鍵會調出應用選單,其中包含以下一些內容

  • 退出命令 :q!
  • “切換鍵盤”命令 - 切換虛擬鍵盤
  • 擴充套件應用選單(在“更多”中)包含透過檔案選擇器開啟檔案、編輯 .vimrc 配置檔案以及修改命令欄(它也是一個簡單的文字檔案)的命令。

滑動命令欄對於常用命令和需要多個按鍵的命令都很有用。命令欄預設情況下已預先填充,但可以根據使用者喜好進行更改。

例如,使用非美國鍵盤佈局的人員可能會使用需要頻繁使用 Shift 鍵的字元填充命令欄。

如何退出 Vim Touch

[編輯 | 編輯原始碼]
  • 按下手機上的選單鍵,觸控 :q! 選單項。就這麼簡單。

否則,對於基於文字的 Unix 和 Linux 程式來說,通常不會顯示如何退出的說明。這也包括 Vim 的前身 vi,但在這種情況下 Vim 不同

在啟動時,Vim 本身會顯示其版本、作者姓名和退出說明。如果您沒有看到這些資訊,但想退出應用,則 -

按下 Esc 鍵並輸入 :q!

是的,您必須輸入冒號 : 和字母 q 以及感嘆號 !

感嘆號是可選的,如果檔案中存在未儲存的更改,但您仍想退出,則可以使用它。

[編輯 | 編輯原始碼]

Vim 有幾種操作模式:其中兩種是編輯模式和命令模式。在前者中,編輯文字;而在後者中,使用鍵盤在文字中移動並輸入命令來操作文字、搜尋、替換、排序等。

Vim 還有更多模式,但我們目前將重點關注這兩種模式。

如果您沒有編輯文字,則可以使用 Esc 鍵切換到命令模式。

命令模式

[編輯 | 編輯原始碼]

啟動時,Vim 預設處於命令模式。在命令模式下,可以使用許多鍵在模式之間切換、四處移動和操作文字。

  • 使用 ia 編輯文字,然後按 Esc 鍵返回命令模式。
  • 如果不確定您處於哪種模式,請按一次或兩次 Esc 鍵進入命令模式。

更重要的命令需要輸入冒號:和一個命令,以及可選的若干引數。

  • 基於冒號的命令需要按下Enter(也稱為Return)鍵,並且用於搜尋和替換、檔案開啟和儲存、排序等操作。
  • 請注意,大寫鎖定會影響輸入的命令,因為大寫命令與小寫命令不同。

命令歷史記錄

[編輯 | 編輯原始碼]

Vim 會儲存命令歷史記錄,因此可以使用Up鍵輕鬆返回到以前的命令,並重復或修改一個或多個以前使用的命令,無論它們是否成功。在使用虛擬鍵盤的移動裝置上,命令歷史記錄非常有用,因為它減少了過度輸入的需要。

可以多次按下Up鍵來按反時間順序(從最新到最舊)訪問儲存的命令。

/ Up — 搜尋歷史記錄
: Up — 通用命令歷史記錄
:s Up — 搜尋/替換(替換)歷史記錄
:%s Up — 對整個檔案執行的替換操作的歷史記錄
:w Up — 儲存歷史記錄

如果使用過更復雜的命令,則可以透過輸入其開頭部分更快地找到它。

  • /wik Up — 如果之前的搜尋查詢的是“維基百科”,則使用此組合可能會顯示完整命令。

開啟檔案

[編輯 | 編輯原始碼]

Vim Touch 允許從應用選單和檔案選擇器開啟檔案:使用裝置選單鍵,然後點選“更多”以檢視更長的命令列表。選擇其中一個開啟命令,然後從應用列表中點選“選擇檔案”。

然後,檔案將在一個新的 Vim 視窗中開啟。使用者可以選擇保留空檔案,或點選其視窗將其聚焦,並使用:q!選單項關閉該檔案/視窗。

儲存檔案

[編輯 | 編輯原始碼]

雖然 UNIX/Linux 作業系統長期以來一直採用以<root>/home/username形式表示預設主目錄的做法,但使用 Linux 核心的 Android 作業系統則使用/data/media/<userid>

使用者可以在根目錄中建立自己的資料夾,而/home通常是最短且最有意義的資料夾名稱。因此,該資料夾將位於/sdcard/home(在 Android 2.3 中)。在 Vim Touch 中儲存到該路徑

:w /sdcard/home/filename.ext

.ext 可以表示任何副檔名。對於文字檔案,它是.txt
使用副檔名儲存檔案非常重要,因為它允許 Android 識別檔案型別並提供許多建議的應用程式(包括 VimTouch)來處理此類檔案。
• 作為助記符,方便地將 Vim 中編輯的文字檔案儲存為filename.vim.txt。這將允許以後在檔案管理器中檢視該檔案是在 Vim 中編輯的,然後使用者可以選擇在 Vim 中開啟該檔案。
請注意,除非是 Vim 的指令碼或外掛,否則不建議將普通文字檔案儲存為filename.vim,因為 Vim 對具有 .vim 副檔名的檔案進行不同的處理。

插入模式 - 或編寫文字

[編輯 | 編輯原始碼]
i — 在塊游標下方的字元前開始寫入(插入)文字
a — 在塊游標下方的字元後開始寫入(追加)文字
I — 從行首開始寫入文字
A — 從行尾開始寫入文字

文字游標也有不同的行為。在命令模式下,文字游標為塊狀,而在插入/追加模式下,文字游標可以是 I 形游標。外觀可能因配置而異,但大多是一致的。

可讀性

[編輯 | 編輯原始碼]

為了提高可讀性和撰寫文字,請設定自動換行 -

:set lbr

要取消設定,請使用

:set lbr!

設定自動換行會增加行的虛擬長度,因為它佔用更多的螢幕空間。

在文字中移動

[編輯 | 編輯原始碼]

Vim Touch 使用了觸控式螢幕顯示器的功能,因此提供了一些普通 Vim 安裝中沒有的功能。

  • 訪問應用選單以執行主要命令;
  • 訪問包含更多有用命令的擴充套件應用選單;
  • 使用者可以點選將游標放置在螢幕上使用者想要處理的文字的(近似)精確位置。
  • 在命令模式下,可以觸控滑動顯示區域以向上或向下滾動。這可能執行順暢也可能不順暢。

在插入/編輯模式下,避免在螢幕上滑動手指,因為它會被解釋為輸入,並且您可能會意外輸入大量亂碼。可以透過轉到命令模式並使用撤銷u命令來撤消此操作。

使用鍵盤

[編輯 | 編輯原始碼]

在 Vim Touch 中,按下裝置選單鍵,然後點選“切換虛擬鍵盤”選單項以顯示鍵盤。

鍵盤的外觀會減小 Vim 視口的大小,如果在 Vim 中打開了多個視窗,則這可能會將最下面的視窗的大小減小到只有一行。解決方法是Ctrl+w5_ — 這會將最小視窗大小增加到 5 行螢幕。

w — 將游標向前移動一個單詞
b — 將游標向後移動一個單詞
5w — 將游標向前移動五個單詞
10b — 將游標向後移動十個單詞

您可以使用任何其他數字。

gg — 移至檔案開頭和第一行的第一個字元
G — 移至檔案末尾和最後一行的開頭。(可能因情況而異;也可能是最後一行的末尾。)

當使用 Hacker's Keyboard 時

  • 在第二個Fn鍵螢幕中,使用PgUpPgDn鍵向上和向下移動一頁。這僅適用於“硬”行,而不適用於一條連續的長行。
  • 第二個鍵螢幕還包含HomeEndInsDel鍵,以及一個專用的數字鍵盤,以便輕鬆輸入較大的數字。

在長行中移動

[編輯 | 編輯原始碼]

在以下情況下,您擁有非常長的文字行、小螢幕裝置和虛擬鍵盤,則在螢幕中移動游標需要幾種創造性的方法,因為上下導航是從一個實際文字行到另一個實際文字行。

( — 移至句子的開頭
) — 移至句子的末尾

這需要句點和空格. 的存在。

3( — 將游標向上移動三個句子
4) — 將游標向下移動四個句子

在沒有這些...的情況下

有時需要轉到下一個螢幕行或連續的幾行。例如,要僅顯示這些。為此,請使用 -

gj — 將游標向下移動一個螢幕行
gk — 將游標向上移動一個螢幕行
螢幕行有時稱為虛擬行。

或者,Vim 狀態行(狀態列)通常會顯示游標在列號處的位置,該列號是從(長)行的開頭到字元的字元數。您可以記住一個列號並在行內轉到該列號。

:goto 3000 — 轉到一行中的第 3000 個字元

操作文字

[編輯 | 編輯原始碼]

可視模式 - 選擇文字

[編輯 | 編輯原始碼]

Vim 使用可視模式來選擇文字,並在命令模式下呼叫。使用Esc鍵退出。

v — 呼叫可視模式,然後使用上面描述的文字移動鍵來選擇文字,例如

v 然後多次按下bw以選擇游標前或後的若干個單詞。
v5w — 選擇接下來的五個單詞
v + 鍵盤上的updown箭頭以選擇幾行。

ggVG — 全選

^ gg 跳到檔案開頭,V 選擇一行,G 將選擇擴充套件到檔案末尾。

V — 選擇整個當前行(游標所在行)。

  • 選中文字後,使用者可以剪下、複製、貼上覆蓋或以其他方式操作文字。
  • 還可以對所選內容執行搜尋替換、連線或排序操作。

剪下、複製、貼上和刪除

[編輯 | 編輯原始碼]

Vim 有幾種方法可以執行這些操作,內部和外部複製貼上命令被分隔到 Vim 內部和外部。這在命令模式下有效。

請注意,剪下和複製通常需要在視覺模式下先選中文字。

xyp(或 P)用於在**Vim 內部**進行剪下、複製和貼上
y 表示“貼上”(yank)
d 用於“刪除”,但作用於“剪下”

除此之外,還有一些鍵序列用於在**Vim 和其他應用程式之間**複製貼上 —

"*x — 剪下
"*y — 複製
"*p — 貼上 — 或 "*P

所以,確實需要輸入雙引號 "、星號 * 和對應於操作的字母。由於這些命令在許多非美國鍵盤佈局中可能需要按 Shift 鍵,因此最好將其中一個或兩個放入 Vim Touch 的命令欄中。

可以透過貼上覆蓋來替換視覺模式下選中的文字塊。

撤消和重做

[編輯 | 編輯原始碼]

u — 撤消,可以撤消任意步數。

一步撤消適用於插入模式下操作的**所有**文字。因此,如果您當前沒有編輯文字,則切換(或預設)到命令模式非常重要。這可以使撤消步驟更細化。

Ctrl+R — 重做

連線、排序

[編輯 | 編輯原始碼]
  • gJ — 將下一行連線到當前行並刪除兩者之間的所有空格。
• 要連線整個檔案中的所有行,必須先使用 ggVG 選擇文字。
  • :sort — 如果您有一系列行,則列表將按照 ASCII 和 Unicode 程式碼點的順序排序。這適用於檔案中的**所有**行。對於僅部分文字,請使用視覺模式選擇文字塊,然後在其中排序。

使用斜槓 / 進行搜尋。Vim 使用正則表示式,可以進行復雜的搜尋。

/searchabletext
然後按 Enter 搜尋“searchabletext”。
  • 預設情況下,搜尋結果(所有匹配項)都會高亮顯示。
:noh — 關閉搜尋結果高亮顯示
  • 要轉到下一個搜尋結果,請使用 n 鍵。
• 移動方向是向下,到達最後一個匹配項後,可以從檔案頂部繼續。
• 向上移動到“上一個”匹配項,使用 Shift+n 組合鍵。
  • 要重用先前使用的搜尋,請使用斜槓 / 並按 Up 鍵顯示先前使用的搜尋命令;
• 可以多次使用 Up 鍵來獲取所需的先前搜尋,或者
• 輸入先前搜尋的開頭部分(以斜槓字元開頭),然後按 Up 鍵。這同樣適用於搜尋和替換操作。

搜尋和替換

[編輯 | 編輯原始碼]

這同樣使用正則表示式,可以執行復雜的文字操作。

簡單來說

:s/searchabletext/textthatreplacesit
• 這實際上查詢“searchabletext”的所有匹配項,並將其替換為“textthatreplacesit”。
• 普通斜槓 / 用作分隔符。要搜尋包含斜槓的內容,必須使用反斜槓對其進行轉義:\/
• 字母 s 代表替換
  • 要在整個檔案中搜索,請使用百分號 % 字元
:%s/apples/oranges
查詢“apples”並將其替換為“oranges”。
如果檔案只有一行,則不需要百分號字元。
  • 如果有一行(非常)長的行包含多個逗號,並且您想將每個逗號後面的文字放在新的一行中
:s/\,/&^M/g
• 逗號 , 使用反斜槓 \ 進行轉義,以確保將其視為文字:\,
• 和號 & 表示新增文字而不是替換文字。根據文字相對於和號的位置,新內容將新增到搜尋結果之前或之後;在本例中,內容新增到逗號之後
^M 代表換行符,但在查詢中輸入為 Ctr+VEnter(又稱 <cr>/回車鍵)
• 斜槓 / 後面的 g 在整行中搜索以匹配行中的所有出現。

語法高亮

[編輯 | 編輯原始碼]

Vim 也是程式設計師、Web 開發人員和維基百科編輯的工具,因為它支援語法高亮,它對基於文字的格式或程式碼的不同部分進行顏色編碼,從而使使用者能夠檢視顯示的程式碼是否正確編寫。如果特定語法不受支援,可以以指令碼形式安裝為外掛。

  • :setf wikimedia — 高亮顯示維基百科語法。這需要指令碼/外掛;請參閱此處瞭解更多資訊
  • :setf javascript — 高亮顯示 JavaScript 程式碼。這可能會在其他應用程式和 Vim 之間切換以及虛擬鍵盤開啟和關閉時導致臨時閃爍。
  • :syn off — 關閉語法高亮顯示

在 Vim Touch 中,JavaScript 語法高亮僅適用於一行中最多 3000 個字元。在舊版或基本 Android 裝置上,語法高亮可能會很慢。某些語法高亮可能會導致應用程式內容暫時閃爍。

單獨安裝的語法指令碼(例如 mediawiki),必須位於 Android 2.3 中的以下路徑中

/sdcard/.vim/syntax/mediawiki.vim

如果這些資料夾尚不存在,則必須使用檔案管理器或終端應用程式(如 Terminal Emulator)建立它們。

華夏公益教科書