首頁 > 軟體

Linux學習筆記:使用Vim編輯器

2020-06-16 17:30:03

Vi編輯器是Unix系統上早先的編輯器,在GNU專案將Vi編輯器移植到開源世界時,他們決定對其作一些改進。
於它不再是以前Unix中的那個原始的Vi編輯器了,開發人員也就將它重新命名為Vi improved,或Vim。
為了方便使用,幾乎所有Linux發行版都建立了一個名為vi的別名,指向vim程式。

Vim基礎

Vim編輯器在記憶體緩衝區處理資料。只要鍵入vim命令和你要編輯的檔案的名字,即可啟動Vim編輯器。
如在啟動Vim時未指定檔名,或者這個檔案不存在,Vim會新開一段緩衝區域來編輯;如果命令指定了一個已有的檔案的命令,Vim會將檔案的整個內容都讀到一塊緩衝區域來準備編輯。

Vim編輯器有兩種操作模式:

  • 普通模式;
  • 插入模式

當開啟要編輯的檔案時,Vim編輯器會進入普通模式。在普通模式下,Vim編輯器會將按鍵解釋成命令;
在編輯模式中,按下i鍵,進入插入模式。插入模式下,每個按鍵都將輸入到游標位置的緩衝區。按Esc鍵即可退出插入模式;

在普通模式中,可以用方向鍵來在文字區域移動游標,如果是在一個沒有定義方向鍵的終端上,還可以使用如下按鍵移動:

按鍵游標移動方式(普通模式下)
h 左移一個字元
j 下移一行
k 上移一行
l 右移一個字元

在大的文字檔案中一行一行的移動會特別麻煩。幸而Vim提供了一些命令來幫助提高速度:

按鍵游標移動方式(普通模式下)
PageDown(或Ctrl+F) 下翻一屏資料
PageUp(或Ctrl+B) 上翻一屏資料
G 移動到緩衝區的最後一行
num G 移動到緩衝區的第num
gg 移動緩衝區的第1行

Vim編輯器在普通模式下有個特別的功能叫命令模式。命令模式提供了一個可供輸入額外命令來控制Vim中行為的互動式命令列。要進入命令模式,在普通模式下按下冒號鍵。游標會移動到訊息行,冒號出現,等號輸入命令。
在命令模式下有幾個命令來將緩衝區的資料儲存到檔案中並退出Vim:

命令描述(命令模式下命令)
q 如果未修改緩衝區的資料,退出
q! 取消所有對緩衝區資料的的修改並退出
w filename 將檔案儲存到另一個檔案filename
wq 將緩衝區資料儲存到檔案中並退出

編輯資料

在普通模式下,Vim編輯器提供了一些命令來編輯緩衝區中的資料。常用號命令有:

命令描述(普通模式下命令)
x 刪除當前游標所在位置的字元
dd 刪除當前游標所在行
dw 刪除當前游標所在位置的單詞
d$ 刪除當前游標所在位置至行尾的內容
J 刪除當前游標所在行行尾的換行符
u 復原前一個編輯命令
a 在當前游標後追加資料
A 在當前游標所在行行尾追加資料
r char char替換當前游標所在位置的單個字元
R text text覆蓋當前游標所在位置的資料,直到按下ESC鍵

有些編輯命令允許使用資料修飾來指定重複該命令多少次。比如,命令2x會刪除從游標當前位置開始的兩個字元,命令5dd會刪除從游標當前所在行開始的向下5行。

複製和貼上

現代編輯器的標準功能之一就是剪下或複製資料,Vim中剪下複製相對容易些。

上面已經有了刪除資料的操作,Vim刪除資料時,實際上它會將資料儲存在單獨的一個暫存器中。可以同p命令來取回資料。

簡而言之,用dd刪除一行文字,然後把游標移動到某個要放置該行文字的位置,之後用p命令。p命令會將文字插入到當前游標所在行之後。p命令可以和任何刪除文字的命令一起搭配使用。

Vim中復制命令是y(代表yank)。y命令和d命令有相同的第二字元(如yw表示複製單詞,y$表示複製到行尾)。在複製文字後,輸入p命令表示貼上。

但是這樣複製有個比較煩惱的問題,就是你沒有看見到底複製了什麼,除非貼上出來才知道。Vim還有個功能解決了這個問題,可視模式會在移動游標時高亮文字,因此可以用可是模式來複製文字,方法如下:

移動游標到要開始複製的位置,按下v鍵,游標所在位置的文字會被高亮顯示,移動游標覆蓋想要複製的文字。覆蓋後按y鍵來啟用複製命令。現在暫存器中已經有了要複製的文字,使用p命令到合適的位置貼上即可。

查詢和替換

要查詢某個字串,在命令模式下,鍵入斜槓(/)加查詢字串(比如查詢字串class:/class),按下Enter鍵,游標會跑到訊息行。在輸入要查詢的文字後,按下Enter鍵,Vim編輯器會有3中回應:

  • 如果游標當前位置之後有你要查詢的文字,則游標會跳到該文字出現的第一個位置(按n鍵到達下一個);
  • 如果游標當前位置之後沒有你要查詢的文字,則游標會繞過檔案末尾,顯示在該文字出現的第一個位置(並用一條訊息顯示);
  • 輸入一條錯誤訊息,說明在檔案中沒有找到要找的文字

替換命令的格式是:

:s/old/new

Vim編輯會跳到old第一次出現的地方並用new來替換,可以對替換命令作一些修改來替換多處要替換的文字:

命令描述
:s/old/new/g 一行命令替換所有old
:n.ms/old/new/g 替換行號n和m之間的所有old
:%s/old/new/g: 替換整個檔案中的old
:%s/old/new/gc: 替換整個檔案中的old,但在每次出現時提示

最後

Vim包含了不少高階功能,由於每個Linux發行版都會包含它,所以應該至少了解一下Vim編輯器的一些基本用法。

更多Vim相關教學見以下內容

Vim 8.0 釋出  http://www.linuxidc.com/Linux/2016-09/135178.htm

Vim學習指南 http://www.linuxidc.com/Linux/2013-08/89096.htm

Vim編輯器設定 http://www.linuxidc.com/Linux/2016-09/135460.htm

Vim編輯器使用 http://www.linuxidc.com/Linux/2016-09/135043.htm

快速學會 Vi編輯器 http://www.linuxidc.com/Linux/2013-08/88586.htm

強大的Vim 編輯器 http://www.linuxidc.com/Linux/2013-07/87544.htm

CentOS 6.2上搭建Vim開發環境 http://www.linuxidc.com/Linux/2013-07/87363.htm

把Vim打造成優秀的C++ IDE  http://www.linuxidc.com/Linux/2016-06/132262.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-10/136297.htm


IT145.com E-mail:sddin#qq.com