vim编辑器的常用技巧
vim編輯器的常用技巧
文章目錄
- vim編輯器的常用技巧
- 前言
- Vi的使用
- vi的三種模式
- 常用按鍵說明
- Vim額外功能
- 多文件編輯
- 多窗口編輯
- 參考文章
前言
我們在使用 Windows 系統時,如果想要更改一些文件的內容,我們通常會以記事本格式(即 txt 格式)打開文件,往里面寫入或修改一些內容,記事本就是我們常用的一款文件編輯器。同樣地,在 Linux 系統下,我們也需要一款文本編輯器來編輯文件的內容。
Linux 系統在命令行模式下的文本編輯器是非常多的,比如 nano、pico、vim等。這其中最重要的,最需要掌握的,就是 vim 編輯器了。
在 Linux 系統中,有一個老式的編輯器 vi,功能很齊全,是一款較為好用的文本編輯工具,大家都喜歡用。而 vim 是 vi 的高級版本,包含了 vi 所有功能的同時,vim里面又加入了很多額外的功能,比如支持正則表達式,多文件編輯等,vim更像是一款程序開發工具,已經獲得了大家的一致好評。
列舉一下學習 vi/vim 的重要性:
注意,現在的 Linux 系統中,已經默認用 vim 替代 vi 了,所以在命令行中直接輸入 vi 或者 vim 的效果是一樣的。
Vi的使用
vi的三種模式
基本上 vi 共分為三種模式:
- 一般命令模式(command node)
- 編輯模式 (insert mode)
- 命令行模式(command-line mode)
一般命令模式也被稱為普通模式,是默認進入的模式,用 vi 打開一個文件就進入一般命令模式了。這里注意,如果文件存在,則vi會打開對應文件;如果文件不存在,vi會新建一個文件再打開,所以打開文件時一定要輸入正確的文件名。
vi filename //比如 vi test.txt在一般命令模式下,可以進行刪除、復制、粘貼等操作,比如,光標移到要刪除的那行,輸入 dd ,刪除該行。但是不允許編輯文件內容。想要進行編輯,得進入編輯模式才可以。
如下圖所示,已經進入一般命令模式。
在一般命令模式下,輸入 i、o、a、r (不論大小寫)其中任何一個字母,都會進入編輯模式。前三個字母代表的是 insert,最后一個 r 代表的是 replace。
注意,要看到左下角出現【INSERT】或【REPLACE】的字樣,才真正進入了編輯模式,在編輯模式下可以任意編輯文本內容。如果要退出編輯模式,按下【Esc】鍵可即退回到一般命令模式。
在一般命令模式下,輸入 :、/、? 其中任何一個符號,就可以把光標移動到最下面那一行,進入命令行模式。
在命令行模式中,可以進行數據的查找,讀取、保存、批量替換字符串、退出vi、顯示行號等操作。同樣地,按下【Esc】鍵即可退回到一般命令模式。
這里注意一點,一般命令模式是默認進入的模式,但是要退出 vi ,只能通過命令行模式退出。
總結一下三個模式之間的關系,一般命令模式可以和其他兩個模式之間相互切換,但是編輯模式與命令行模式不可以相互切換。
用 vim 來編輯文件最常用的一種方式是,用 vim 文件名 的方式打開文件,按 i 進入編輯模式對文件進行編輯,編輯完成后按 【Esc】 鍵退回到一般命令模式,按下 : 進入命令行模式,輸入 wq 并回車,文件保存成功。
常用按鍵說明
下面的表格列舉了一些常用按鍵(區分大小寫),在一般命令模式下,學會這些按鍵使用,可以幫助自己提升效率,事半功倍。
| h 或 左箭頭 ← | 光標向左移動 |
| j 或 下箭頭 ↓ | 光標向下移動 |
| k 或 右箭頭 → | 光標向右移動 |
| l 或 上箭頭 ↑ | 光標向上移動 |
| ctrl + f | 屏幕向下移動一頁 |
| ctrl + b | 屏幕向上移動一頁 |
| n<space> | n表示數字,按下數字后再按空格鍵,光標會向右移動 n 個字符的位置 |
| n<enter> | n表示數字,按下數字后再按回車鍵,光標會向下移動 n 行 |
| 0 | 數字0,光標會移動到這一行的第一個位置 |
| $ | 光標移動到這一行最后一個位置 |
| gg | 光標移動到文件的第一行,相當于 1G |
| G | 光標移動到文件的最后一行 |
| nG | n表示數字,光標移動到文件的第 n 行 |
| /word | 從光標位置開始,向下查找一個名為 word 的字符串 |
| ?word | 從光標位置開始,向上查找一個名為 word 的字符串 |
| n | n是英文按鍵,重復前一個查找的操作 |
| :n1,n2s/word1/word2/g | n1、n2為數字,在第 n1 與 n2 行之間尋找 word1 這個字符串, 并將其全部替換為 word2(注意前面有冒號) |
| :1,$s/word1/word2/g | 在第一行與最后一行之間尋找 word1 這個字符串,并將其全部替換為 word2 |
| :1,$s/word1/word2/gc | 加了一個 c,在替換前會詢問用戶是否替換 |
如果不小心替換錯了,可以按 u 撤銷上一步操作。
| x/X | 以光標位置為起點,x表示向后刪除一個字符(相當于Delete) X表示向前刪除一個字符(相當于Backspace) |
| nx | n為數字,連續向后刪除n個字符。nX 則連續向前刪除 n 個字符 |
| dd | 剪切光標所在的那一行數據 |
| ndd | n為數字,剪切包含光標所在行向下的 n 行數據。nyy同理 |
| d$ | 剪切光標所在處到該行的最后一個字符。y$同理 |
| yy | 復制光標所在的那一行數據 |
| p/P | p將一復制的數據在光標下一行粘貼,P在上一行粘貼 |
| J | 將光標所在行與下一行數據結合成同一行 |
| u | 撤銷上一步操作 |
| . | 小數點,重復上一步操作 |
這里注意,小數點是不能重復撤銷操作的。舉個例子,有一行數據 “Linux is funny”,光標在 x 字符上,按下 d$,本行數據變為 “Linu”,按下 u 進行撤銷,數據恢復為 “Linux is funny”,此時按下小數點 . 會重復進行 d$ 操作,而不是撤銷,數據又變成了 “Linu”。
| :w | 將編輯的文件進行保存 |
| :w! | 若文件屬性是只讀屬性,如果用戶權限足夠,可以進行強制保存 |
| :q | 退出 vi/vim |
| :q! | 強制退出 |
| :wq | 保存并退出,:wq! 即為強制保存并退出 |
| ZZ | 文件沒有修改則直接退出,文件修改了則保存再退出 |
| :! command | 暫時退出 vi/vim 到命令行模式下執行 command的顯示結果(注意空格) |
| :set nu | 顯示行號 |
| :set nonu | 不顯示行號 |
例如,:! ls ~ 這條命令,可以查看當前 home 目錄下面以 ls 輸出的文件信息,按任意鍵可以回到 vi/vim 中。
Vim額外功能
多文件編輯
我們用 vi 打開一個文件的時候它是占滿全屏的,我們看不到別的文件,也只能編輯當前文件。vim支持我們進行多個文件同時編輯,可以來回切換而不是頻繁退出。
| :n | 編輯下一個文件 |
| :N | 編輯上一個文件 |
| :files | 列出目前這個 vim 開啟的所有文件 |
舉個例子。首先,我們先一次性打開兩個文件,系統會默認顯示第一個文件
vim test1.txt test2.txt輸入 :files 即可看到我們同時打開了兩個文件,%a表示當前正在查看的是 test1.txt 文件。
按任意鍵繼續,輸入 :n 即可切換到下一個文件進行編輯。
注意,必須是用 vim 同時打開多個文件才行。
多窗口編輯
如果想需要同時對照多個文件進行編輯,多文件下就得反復橫跳,對照的效率大大降低,感覺比較麻煩。幸好 vim 為我們提供了多窗口編輯的功能,有了多窗口,就可以方便地進行文件的對照和編輯了。
相比之下,多窗口就比多文件更靈活、更好用,而且沒有了多文件必須同時打開的限制。
| :sp {filename} | 打開一個新窗口,如果有 filename,則在新窗口打開新文件; 如果僅輸入了 :sp 則將當前文件再用新窗口打開一次 |
| ctrl + w + j ctrl + w +↓ | 先按下 ctrl 鍵不放,再按下 w 鍵,松開所有按鍵,再按下 j 或方向鍵,光標移動到下面的窗口 |
| ctrl + w + k ctrl+ w + ↑ | 同理,光標移動到上面的窗口 |
| :q | 退出當前窗口,:wq 同理使用 |
比如,我們先用 vim 打開剛才的 test1.txt 文件,再通過命令行輸入 :sp test2.txt 即可使用多窗口,對照更方便,不易出錯。
想退出哪個窗口,可以先將光標切換到對應窗口,按 Esc 鍵進入一般命令模式,再輸入 :q 退出。
參考文章
鳥哥的Linux私房菜——基礎學習篇(第四版)
總結
以上是生活随笔為你收集整理的vim编辑器的常用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 排序算法代码总结
- 下一篇: Shell脚本使用常见问题说明