如何安裝和使用純文字編輯器 vi/vim
導讀 | 幾個月前, 基金會發起了 LFCS (Linux 基金會認證系統管理員Linux Foundation Certified System administrator)認證,以幫助世界各地的人來驗證他們能夠在 Linux 系統上做基本的中級系統管理任務:如系統支援、第一手的故障診斷和處理、以及何時向上遊支援團隊提出問題的智慧決策。 |
這篇文章是系列教程的第二講,在這個部分中,我們會介紹 vi/vim 基本的檔案編輯操作,幫助讀者理解編輯器中的三個模式,這是 LFCS 認證考試中必須掌握的
vi 是為 Unix 而生的第一個全屏文字編輯器。它的設計小巧簡單,對於僅僅使用過諸如 NotePad++ 或 gedit 等圖形介面的文字編輯器的使用者來說,使用起來可能存在一些困難。
為了使用 vi,我們必須首先理解這個強大的程式操作中的三種模式,方便我們後邊學習這個強大的文字處理軟體的相關操作。
請注意,大多數的現代 Linux 發行版都整合了 vi 的變種——— vim(改進版 VIVi IMproved),相比於 vi,它有更多新功能。所以,我們會在本教程中交替使用 vi 和 vim。
如果你的發行版還沒有安裝 vim,你可以透過以下方法來安裝:
- •Ubuntu 及其衍生版:apt-get update && apt-get install vim
- •以 Red-Hat 為基礎的發行版:yum update && yum install vim
- •openSUSE :zypper update && zypper install vim
至少有以下兩個理由:
- 因為它是 POSIX 標準的一部分,所以不管你使用什麼發行版 vi 總是可用的。
- vi 基本不消耗多少系統資源,並且允許我們僅僅透過鍵盤來完成任何可能的任務。
此外,vi 有著非常豐富的內建幫助手冊,程式開啟後就可以透過 :"help" 來檢視。這個內建幫助手冊比 vi/vim 的 man 頁面包含了更多資訊。
可以透過在 提示符下輸入 vi 來啟動。
然後按下字母 i,你就可以開始輸入了。或者透過下面的方法來啟動 vi:
1.# vi filename
這樣會開啟一個名為 filename 的快取區(稍後會詳細介紹快取區),在你編輯完成之後就可以儲存在磁碟中了。
1.命令command模式,vi 允許使用者瀏覽該檔案並輸入由一個或多個字母組成的、簡短的、大小寫敏感的 vi 命令。這些命令的大部分都可以增加一個字首數字表示執行次數。
比如:yy(或Y) 複製當前的整行,3yy(或3Y) 複製當前整行和下邊緊接著的兩行(總共3行)。透過 Esc 鍵可以隨時進入命令模式(而不管當前工作在什麼模式下)。事實上,在命令模式下,鍵盤上所有的輸入都被解釋為命令而非文字,這往往使得初學者困惑不已。
2.末行ex模式,我們可以處理檔案(包括儲存當前檔案和執行外部程式)。我們必須在命令模式下輸入一個冒號(:),才能進入這個模式,緊接著是要在末行模式下使用的命令。執行之後 vi 自動回到命令模式。
3.文字輸入insert模式(通常在命令模式下使用字母 i 進入這個模式),我們可以隨意輸入文字。大多數的鍵入將以文字形式輸出到螢幕(一個重要的例外是Esc鍵,它將退出文字編輯模式並回到命令模式)。
下面列出常用的 vi 命令。檔案編輯的命令可以透過新增歎號的命令強制執行(如,:q! 命令強制退出編輯器而不儲存檔案)。
h 或 ← 游標左移一個字元
j 或 ↓ 游標下移一行
k 或 ↑ 游標上移一行
l (小寫字母 L) 或 → 游標右移一個字元
H 游標移至螢幕頂行
L 游標移至螢幕末行
G 游標移至檔案末行
w 游標右移一個詞
b 游標左移一個詞
0 (數字零) 游標移至行首
^ 游標移至當前行第一個非空格字元
$ 游標移至當前行行尾
Ctrl-B 向後翻頁
Ctrl-F 向前翻頁
i 在游標所在位置插入文字
I (大寫字母 i) 在當前行首插入文字
J (大寫字母 j) 將下一行與當前行合併(下一行上移到當前行)
a 在游標所在位置後追加文字
o (小寫字母 O) 在當前行下邊插入空白行
O (大寫字母 O) 在當前行上邊插入空白行
r 替換游標所在位置的一個字元
R 從游標所在位置開始覆蓋插入文字
x 刪除游標所在位置的字元
X 立即刪除游標所在位置之前(左邊)的一個字元
dd 剪下當前整行文字(為了之後進行貼上)
D 剪下游標所在位置到行末的文字(該命令等效於 d$)
yX 給出一個移動命令 X (如 h、j、H、L 等),複製適當數量的字元、單詞或者從游標開始到一定數量的行
yy 或 Y 複製當前整行
p 貼上在游標所在位置之後(下一行)
P 貼上在游標所在位置之前(上一行)
. (句點) 重複最後一個命令
u 撤銷最後一個命令
U 撤銷最後一行的最後一個命令,只有游標仍在最後一行才能執行。
n 在查詢中跳到下一個匹配項
N 在查詢中跳到前一個匹配項
:n 下一個檔案,編輯多個指定檔案時,該命令載入下一個檔案。
:e file 載入新檔案來替代當前檔案
:r file 將新檔案的內容插入到游標所在位置的下一行
:q 退出並放棄更改
:w file 將當期開啟的快取區儲存為file。如果是追加到已存在的檔案中,則使用 :w >> file 命令
:wq 儲存當前檔案的內容並退出。等效於 x! 和 ZZ
:r! command 執行 command 命令,並將命令的輸出插入到游標所在位置的下一行
下列選項可以讓你在執行 Vim 的時候很方便(需要寫入到" ~/.vimrc" 檔案):
1.# echo set number >> ~/.vimrc 2.# echo syntax on >> ~/.vimrc 3.# echo set tabstop=4 >> ~/.vimrc 4.# echo set autoindent >> ~/.vimrc
- •set number 當 vi 開啟或新建檔案時,顯示行號。
- •syntax on 開啟語法高亮(對應多個副檔名),以便原始碼檔案和配置檔案更具可讀性。
- •set tabstop=4 設定製表符間距為 4 個空格(預設為 8)。
- •set autoindent 將前一行的縮排應用於下一行。
vi 具有透過查詢將游標移動到(在單獨一行或者整個檔案中的)指定位置。它還可自動或者透過使用者確認來執行文字替換。
a) 在行內查詢。f 命令在當前行查詢指定字元,並將游標移動到指定字元出現的位置。
例如,命令 fh 會在本行中將游標移動到字母h下一次出現的位置。注意,字母 f 和你要查詢的字元都不會出現在螢幕上,但是當你按下回車的時候,要查詢的字元會被高亮顯示。
比如,以下是在命令模式按下 f4 之後的結果。
b) 在整個檔案內查詢。使用 / 命令,緊接著需要查詢的單詞或短語。這個查詢可以透過使用 n 命令或者 N 重複查詢上一個查詢的字串。以下是在命令模式鍵入 /Jane 的查詢結果。
c) vi 透過使用命令來完成多行或者整個檔案的替換操作(類似於 sed)。我們可以使用以下命令,使得整個檔案中的單詞 “old” 替換為 “young”。
1.:%s/old/young/g
注意:冒號位於命令的最前面。
冒號 (:) 進入末行模式,在本例中 s 表示替換,% 是從第一行到最後一行的表示方式(也可以使用 nm 表示範圍,即第 n 行到第 m 行),old 是查詢模式,young 是用來替換的文字,g 表示在每個查詢出來的字串都進行替換。
另外,在命令最後增加一個 c,可以在每一個匹配項替換前進行確認。
1.:%s/old/young/gc
將舊文字替換為新文字前,vi/vim 會向我們顯示以下資訊:
- •y: 執行替換(yes)
- •n: 跳過這個匹配字元的替換並轉到下一個(no)
- •a: 在當前匹配字元及後邊的相同項全部執行替換
- •q 或 Esc: 取消替換
- •l (小寫 L): 執行本次替換並退出
- •Ctrl-e, Ctrl-y: 下翻頁,上翻頁,檢視相應的文字來進行替換
我們在命令提示符輸入 vim file1 file2 file3 如下:
1.# vim file1 file2 file3
vim 會首先開啟 file1,要跳到 file2 需用 :n 命令。當需要開啟前一個檔案時,:N 就可以了。
為了從 file1 跳到 file3
a) :buffers 命令會顯示當前正在編輯的檔案列表
1.:buffers
b) :buffer 3 命令(後邊沒有 s)會開啟第三個檔案 file3 進行編輯。
在上邊的圖片中,標記符號 # 表示該檔案當前已被開啟,但是是在後臺,而 %a 標記的檔案是正在被編輯的。另外,檔案號(如上邊例子的 3)後邊的空格表示該檔案還沒有被開啟。
為了複製連續的多行(比如,假設為 4 行)到一個名為 a 的臨時快取區(與檔案無關),並且還要將這些行貼上到在當前 vi 會話檔案中的其它位置,我們需要:
- 按下 Esc 鍵以確認 vi 處在命令模式
- 將游標放在我們希望複製的第一行文字
- 輸入 "a4yy 複製當前行和接下來的 3 行,進入一個名為 a 的快取區。我們可以繼續編輯我們的檔案————我們不需要立即插入剛剛複製的行。
- 當到了需要使用剛剛複製的那些行的位置,在 p(小寫)或 P(大寫)命令前使用"a來將複製行插入到名為 a 的 快取區:
- 輸入 "ap,複製行將插入到游標位置所在行的下一行。
- 輸入 "aP,複製行將插入到游標位置所在行的上一行。
如果願意,我們可以重複上述步驟,將快取區 a 中的內容插入到我們檔案的多個位置。像本節中這樣的一個臨時快取區,會在當前視窗關閉時釋放掉。
像我們看到的一樣,vi/vim 在命令介面下是一個強大而靈活的文字編輯器。透過以下連結,隨時分享你自己的技巧和評論。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2931988/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- vi/vim編輯器
- 使用 Vi/Vim 編輯器:基礎篇
- 快速上手Linux核心命令(六):Linux的文字編輯器vi和vimLinux
- vi和vim的編輯模式模式
- Linux系統下都vi文字編輯器如何使用?Linux
- Linux– 檔案編輯器 vi/vim(1)Linux
- linux命令之vi文字編輯器Linux
- centos7安裝vim編輯器CentOS
- Vi 和 Vim 的使用
- vim編輯器的使用
- 文字編輯工具那麼多,運維為什麼要學vi/vim?運維
- 12 vi編輯器
- Linux學習筆記(九)Vim文字編輯器的使用Linux筆記
- Plain Text Pro Mac(純文字編輯器)AIMac
- Linux 筆記分享五:VIM 文字編輯器Linux筆記
- vim編輯器
- 03_vim編輯器的使用
- Ulysses for Mac v30,Mac純文字編輯器Mac
- CentOS vim編輯器CentOS
- LINUX VIM編輯器Linux
- Linux基礎命令---vim文字編輯Linux
- linux基礎命令——文字編輯vimLinux
- Linux Vim編輯的的配置和使用Linux
- 好用的純文字編輯器:Ulysses中文啟用版
- 增強 Vim 編輯器,提高編輯效率
- 『學了就忘』vim編輯器基礎 — 94、vim編輯器介紹
- 『學了就忘』vim編輯器基礎 — 97、vim使用技巧
- SSM使用UEditor富文字編輯器SSM
- [Djangorestframework]-富文字編輯器的使用DjangoRESTFramework
- 隨處可編輯的編輯器之神VIM
- Linux編輯器Vim簡介Linux
- VIM編輯器的巨集操作
- 【html】編輯器的安裝HTML
- 【Linux】中預設文字編輯器 vim 的入門與進階Linux
- 文字和原始碼編輯器EditRocket for Mac原始碼Mac
- 關於專案中使用的富文字編輯器markdown和傳統的富文字編輯器的對比和選擇
- Linux-vim文字編輯器-三種模式-vim裡的替換-vim檢視模式-對比檔案Linux模式
- Git清空VIM編輯器內容Git