在Linux江湖,最常用到的編輯器非vim莫屬,vim的功能很強大。
1. vim簡介
在Linux世界中,最長用到的而且功能比較強大的是Vim編輯器。Vim編輯器是在內存緩沖區中處理數據。
vim 文件名 or vi 文件名
都可以通過vim打開文件
一般vim打開文件功能更多一些,特別是對於shell腳本這種文本,會有不同字符的高亮顯示。
如果啟動vim時未指定文件名,或者指定的文件名不存在,vim會開辟一段新的緩沖區域來編輯。
vim /etc/passwd
vim tt
2 vim模式介紹
vim編輯器有兩種模式:
- 普通模式
- 插入模式
2.1 普通模式
當剛打開要編輯的文件或新建一個文件時,vim首先進入的是普通模式。在普通模式中,vim會將案件解釋程命令。
在普通模式下,可以用方向鍵在文本區域移動光標。vim有用來移動光標的命令:
h:左移一個字符
j:下移一行(文本的下一行)
k:上移一行(文本的上一行)
l:右移一個字符
PageDown(或Ctrl+F):下翻一屏
PageUp(或Ctrl+B):上翻一屏
G:移動到緩沖區的最后一行
num G:移動到緩沖區的第num行
gg:移動到緩沖區的第一行
2.2 普通模式的命令行模式
Vim編輯器在普通模式下有個特特別的功能叫命令行模式。命令行模式提供了一個交互式命令行,可以輸入額外的命令來控制vim的行為。要進入命令行模式,在普通模式下按下冒號鍵”:”,光標會移動到消息航,然后出現冒號,等待輸入命令。
在命令行模式下有幾個命令時可以退出緩沖區:
:q 如果未修改緩沖區數據,退出。
:q! 取消所有對緩沖區數據的修改並退出。
:w filename 將文件保存到另一個文件中。
:wq 將緩沖區數據保存到文件中並退出
3 編輯數據
在普通模式,輸入i,就會進入到插入模式,然后就可以編輯和數據的插入。如圖:
在普通模式下,vim提供了一些命令來編輯緩沖區中的數據。
命令 |
描述 |
x |
刪除當前光標所在位置的字符 |
dd |
刪除光標所在的行 |
dw |
刪除當前光標所在的單詞 |
d$ |
刪除當前光標所在位置至行尾的內容 |
J |
刪除當前光標所在行行尾的換行符(拼接符) |
u |
撤銷前一編輯命令 |
a |
在當前光標后追加數據 |
A |
在當前光標所在行尾追加數據 |
r char |
用char替換當前光標所在位置的單個字符 |
R text |
用text覆蓋當前光標所在位置的數據,知道按下ESC鍵 |
4 復制和粘貼
vim在刪除數據時,實際上會將數據保存在單獨的一個寄存器中。可以用p命令取回數據。而復制操作在vim中是y(代表yank),可以在y后面使用和d命令相同的第二字符(yw代表復制一個單詞,y$代表復制到行尾)。復制文本后,把光標移動到希望放置文本的地方,輸入p命令,復制的文件就會出現在該位置。
復制的過程你無法知道自己到底復制了多少內容,知道粘貼后才明白復制的內容是什么,可視模式可以解決這個問題,可視模式會在你移動光標時就高亮顯示需要復制的文本的內容。要進入可視模式,將光標移動到開始復制的位置,然后按下v鍵,你會注意到光標所在位置的文本已經被高亮顯示。下一步,移動光標來覆蓋希望復制的文本,高亮顯示會覆蓋所有你移動的行文本,然后按下y鍵進行復制,寄存器中已經有了要復制的文本,將光標移動到希望放置文本的位置,使用p鍵來粘貼,這樣就完成了復制粘貼操作。
選中后輸入 y復制,然后選擇需要粘貼的地方,輸入p粘貼
如圖:
然后就復制成功粘貼了!
5 查找和替換
5.1 查找
在vim中可以通過按下斜線(/)鍵。光標會跑到消息航,然后vim會顯示出斜線,然后輸入需要查找的關鍵字符,按下回車鍵,vim會在文本中查找要查找的文本。
通常會出現三種回應:
- 如果要查找的文本出現在光標當前位置之后,則光標會跳轉到該文本出現的第一個位置。
- 如果要查找的文本未在光標當前位置之后出現,而且在之前出現,則光標會染過文件末尾,出現在該文本所在的第一個位置(並用一條消息指明)
- 輸出一條錯誤消息,說明在文件中沒有找到要查找的文本。
如果要繼續查找同一個單詞,按下斜線,然后按回車,揮着使用n鍵,表示下一個(next).
5.2 替換
替換命令允許你快速的用一個單詞來替換文本中的另一個單詞。必須進入命令模式才能使用替換命令。替換命令的格式:
:s/old/new
Vim會跳到old第一次出現的地方,並用new來替換。
對這個命令進行一些修改可以替換多處文本:
:s/old/new/g 可以替換掉第一行出現的所有old,替換成new.
:n,ms/old/new/g 替換行號n和m之間的所有old
:%s/old/new/g 替換整個文件中的所有old 最常用到
:%s/old/new/gc 替換整個文件中的所有old,但在每次出現時提示。