(一) 什麼是 Vim
在我看一本書的時候,有一句話印象很深刻,“在Linux系統中一切都是文件,而配置一個服務就是在修改其配置文件的參數”,所以我們需要學習一種文本編輯工具也就是今天的 Vim,那麼什麼是 Vim 呢?
Vim是從vi發展出來的一個文本編輯器。其代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。和Emacs並列成爲類Unix系統用戶最喜歡的編輯器
也就是說 Vim 是從 Vi 發展而來的,但是卻功能更加的完善以及強大,你將它理解一個可擴展的編輯器就可以了,因爲它的功能強大,甚至可以擴展後作爲 IDE 使用,不過作爲入門,我們首先要學會其基本用法
注:當然編輯器還有很多種例如 Vim、emacs、pico、nano 等,有興趣可以自行了解
(二) Vim 安裝
首先,很多 Linux 的發行版系統,通常都已經默認安裝好了 vi 或 Vim 文本編輯器,例如 CentOS,今天演示的機器是一臺 Ubuntu-18.04.1 的版本,它默認是沒有 Vim 的,如果直接使用會顯示找不到命令,如下顯示:
Command 'vim' not found, but can be installed with:
apt install vim
apt install vim-gtk3
apt install vim-tiny
apt install neovim
apt install vim-athena
apt install vim-gtk
apt install vim-nox
所以可以根據提示通過簡單的命令進行安裝:apt install vim
(關於安裝系列的命令會在後面的文章中介紹)
可以輸入 vim --version
看一下有沒有返回信息判斷是否安裝成功
(三) Vim 的三種模式
(1) 命令模式
此模式下可使用方向鍵(上、下、左、右鍵)或 k、j、h、i 移動光標的位置,還可以對文件內容進行復制、粘貼、替換、刪除等操作,下圖爲 Ubuntu-18.04.1 圖形界面下 Terminal 的一個演示場景
說幾個非常常用的命令:
-
i鍵
切換到輸入模式,以輸入字符 -
Esc鍵
切換到命令模式 -
:鍵
切換到末行模式,以在最底一行輸入命令。
如果你想要編輯點什麼:啓動 Vim,進入到文件就進入了命令模式,按下i鍵
,切換到輸入模式,按Esc鍵
切換到命令模式,再按:鍵
切換到末行模式,執行保存退出,或者直接退出等命令
(2) 輸入模式
輸入模式,就是普通的文本錄入,例如我在下例中,在命令模式下輸入了 i 進入了輸入模式,然後輸入了上述文本
當然了,輸入模式的命令有很多,摘一些常用的出來,首先是關於文本插入的
命令 | 功能描述 |
---|---|
i |
在當前光標所在位置插入隨後輸入的文本,光標後的文本相應向右移動 |
I |
在光標所在行的行首插入隨後輸入的文本,行首是該行的第一個非空白字符 |
o |
在光標所在行的下面插入新的一行。光標停在空行首,等待輸入文本 |
O |
在光標所在行的上面插入新的一行。光標停在空行的行首,等待輸入文本 |
a |
在當前光標所在位置之後插入隨後輸入的文本 |
A |
在光標所在行的行尾插入隨後輸入的文本,相當於光標移動到行尾再執行a命令 |
再有就是一些別的常用的
命令 | 功能描述 |
---|---|
dd |
刪除(剪切)光標所在整行 |
5dd |
刪除(剪切)從光標處開始的5行 |
yy |
複製光標所在整行 |
n |
顯示搜索命令定位到的下一個字符串 |
N |
顯示搜索命令定位到的上一個字符串 |
u |
撤銷上一步的操作 |
p |
將之前刪除(dd)或fuzhi(yy)過的數據粘貼到光標後 |
還有就是使用上下左右鍵移動鍵盤,然後 Ecs鍵
切換到命令模式
(3) 末行模式
編輯模式主要用於對文件進行保存或者退出等等操作
使 Vim 切換到編輯模式的方法是在命令模式狀態下按“:”鍵,此時 Vim 窗口的左下方出現一個“:”符號,這是就可以輸入相關指令進行操作了
命令 | 作用 |
---|---|
:w |
保存文件 |
:q : |
退出程序 |
:q! |
如果無法離開Vim,可以使用此命令強制退出Vim編輯器 |
:wq! |
保存文件並退出編輯器 |
:wq! |
保存文件並強制退出編輯器 |
:x |
保存文件並強制退出編輯器,其功能與:wq!相同 |
: set nu |
顯示行號 |
: set nonu |
不顯示行號 |
(四) 編輯文件
上面雖然講解了三種模式,其實如果只是針對一些普通的配置,其實上面所講的內容已經夠用了,但是如果想更加行雲流水般的對文本內容進行操作就需要再多學習一些命令
(1) 打開文件
首先編輯之前當然是打開文件,如果我們已經存在某個文件,就可以直接進入,如果沒有此文件,則會先創建再進入,例如下面的意義,就是進入 demo.txt 的編輯模式
root@ubuntu:~# vim demo.txt
這個時候,我們就可以通過比較常用的 i鍵
進入輸入模式,就能編輯文本了
Vi 使用的選項 | 說 明 |
---|---|
vim filename |
打開或新建一個文件,並將光標置於第一行的首部 |
vim -r filename |
恢復上次 vim 打開時崩潰的文件 |
vim -R filename |
把指定的文件以只讀方式放入 Vim 編輯器中 |
vim + filename |
打開文件,並將光標置於最後一行的首部 |
vi +n filename |
打開文件,並將光標置於第 n 行的首部 |
vi +/pattern filename |
打幵文件,並將光標置於第一個與 pattern 匹配的位置 |
vi -c command filename |
在對文件進行編輯前,先執行指定的命令 |
(2) 進行編輯
關於幾種常見的插入文本的命令,在前面已經輸入模式已經說過了,所以我們直接從查找開始說
A:刪除文本
快捷鍵 | 功能描述 |
---|---|
x |
刪除光標所在位置的字符 |
dd |
刪除光標所在行 |
ndd |
刪除當前行(包括此行)後 n 行文本 |
dG |
刪除光標所在行一直到文件末尾的所有內容 |
D |
刪除光標位置到行尾的內容 |
:a1,a2d |
函數從 a1 行到 a2 行的文本內容 |
B:複製粘貼
快捷鍵 | 功能描述 |
---|---|
p |
將剪貼板中的內容粘貼到光標後 |
P(大寫) |
將剪貼板中的內容粘貼到光標前 |
y |
複製已選中的文本到剪貼板 |
yy |
將光標所在行復制到剪貼板,此命令前可以加數字 n,可複製多行 |
yw |
將光標位置的單詞複製到剪貼板 |
(3) 查找替換
A:查找
有一點需要注意的是,要查找的字符串要嚴格區分大小寫
快捷鍵 | 功能描述 |
---|---|
/abc |
從光標所在位置向前查找字符串 abc |
/^abc |
查找以 abc 爲行首的行 |
/abc$ |
查找以 abc 爲行尾的行 |
?abc |
從光標所在爲主向後查找字符串 abc |
n |
向同一方向重複上次的查找指令 |
N |
向相反方向重複上次的查找指定 |
B:替換
快捷鍵 | 功能描述 |
---|---|
r |
替換光標所在位置的字符 |
R |
從光標所在位置開始替換字符,其輸入內容會覆蓋掉後面等長的文本內容,按 “Esc” 可以結束 |
:s/a1/a2/g |
將當前光標所在行中的所有 a1 用 a2 替換 |
:n1,n2s/a1/a2/g |
將文件中 n1 到 n2 行中所有 a1 都用 a2 替換 |
例如,要將某文件中所有的 "root" 替換爲 "ideal-20",有兩種輸入命令,分別爲:
:1, $s/root/ideal-20/g
或
:%s/root/ideal-20/g
- 第一種寫法中,
1,$
代表到第一行到最後一行,如果寫成1,30
就是 1-30行 - 第二種寫法中
%
代表到第一行到最後一行 - 如果不指定,就會在當前行生效
(五) 結尾
如果文章中有什麼不足,歡迎大家留言交流,感謝朋友們的支持!
如果能幫到你的話,那就來關注我吧!如果您更喜歡微信文章的閱讀方式,可以關注我的公衆號
在這裏的我們素不相識,卻都在爲了自己的夢而努力 ❤
一個堅持推送原創開發技術文章的公衆號:理想二旬不止