Vim 上手指南【基础、中级】
前言:
vi 編輯器是所有 Unix 及?Linux?系統下標準的編輯器,他相當于?windows?系統中的記事本,但遠比 Windows 下的記事本強大上百倍。是我們使用?Linux?系統不能缺少的工具。不過由于他是在終端界面中運行的(如下圖),所以讓很多習慣了GUI界面的新手初見甚是頭大。本文就的目的就是旨在讓一個新手能夠快速入門,達到中級水平,從而自由的使用 VI/VIM 進行快速基本的文件編輯。
1. 首先談一下 vi 與 vim 的區別
2. vim 的三種工作模式及其切換
PS:這三種模式必須搞明白,不然無法繼續下面的學習。
2.1 三種模式
命令模式(默認):剛進入vim的時候,默認就是 命令模式,可以復制行,刪除行等。
輸入模式:可以輸入編輯文本內容。
末行模式:在最下邊,除編輯模式,可以輸入諸多管理員命令
2.2 模式轉換
PS: 在正式使用 vim 前,需要提醒大家,除了在進入輸入模式之后,編輯文本的時候可以使用中文輸入法,其他模式下進行的各種操作操作都要切換成英文(及半角字符輸入),否則某些操作會失敗。
#vim text.txt 進入命令模式【存在 text.txt 的話打開,不存在創建 text.txt】 命令模式 -> 輸入模式:【i/I:insert、a/A:append、o/O:open、r:replace】i:在當前光標所在字符的前面,轉為輸入模式 I:在當前光標所在行的行首轉換為輸入模式a:在當前光標所在字符的后面,轉為輸入模式A:在光標所在行的行尾,轉換為輸入模式o:在當前光標所在行的下方,新建一行,并轉為輸入模式O:在當前光標所在行的上方,新建一行,并轉為輸入模式s:刪除光標所在字符r:替換光標處字符輸入模式 -> 命令模式ESC鍵命令模 -> 末行模式輸入":" 即可 轉為末行模式在末行模式下10d:可刪除第10行10,20d:刪除10-20行set nu:顯示行號!命令:可以執行bash命令末行模式-操作末行模式 -> 命令模式ESC鍵3.使用 vim 如何打開文件?
1) vim /path/to/somefile :vim后跟文件路徑及文件名 ,如果文件存在,則打開編輯文件窗口,如果文件不存在,則創建文件
[root@sky ~]#?vim /etc/fstab2) vim + # :打開文件,并定位到第 # 行,#代表數
root@sky ~]# vim +20 /etc/fstab # 打開后光標定位到第三行行首3) vim + :打開文件,定位到最后一行
4)?vim +/PATTERN:打開文件,定位到第一次被 PATTERN [即正則表達式] 匹配到的行的行首
root@sky:~$ vim +/swap /etc/fstab4.?關閉文件
末行模式下:
# w: write[寫入即保存], q: quit[退出] w:保存 q:退出 wq 或 x:保存退出,wq 和 x 都是保存退出 q!:強制退出 w!:強制保存,管理員才有權限命令模式下:
ZZ:保存并退出5.移動光標
?1) 命令模式下:
①逐字符移動【在使用 vim 的時候還可以使用鍵盤的方向鍵移動,使用 vi 的時候是不可以用方向鍵的,有些版本的 Linux 默認使用了 alias 命令重新給 vim 起了 vi 的別名,使得直接使用 vi 打開的其實是 vim】h:向左l:向右j:向下k:向上#h:向左移動 # 個字符【最強大之處在這】 ②以單詞為單位移動w:移到下一個單詞的詞首 【word】e:跳至當前或下一個單詞的詞尾 [word end]b:跳至當前或上一個單詞的詞首 [word begin]#w:表示移動 # 個單詞 ③行內跳轉0:絕對行首^:行首第一個非空白字符 [這里記得使用英文輸入法,否則無效]$:絕對行尾 [這里記得使用英文輸入法,否則無效] ④行間跳轉#G:跳轉到第#行G:最后一行2) 末行模式下:
?直接輸入行號即可跳轉到指定行
6.翻屏
命令模式下:
Ctrl+f:向下翻一屏 Ctrl+b:向上翻一屏Ctrl+d:向下翻半屏 Ctrl+u:向上翻半屏7.刪除 d [其實應該叫 “剪切” 更合適點]
PS: d 操作刪除處的內容其實保存在了剪切板,所以可以將刪除的刪除的內容,粘貼至別處。所以叫做剪切更加合適。
命令模式下
①刪除單個字符:x:刪除光標所在處單個字符#x:刪除光標所在處及向后共#個字符②刪除命令:dd命令跟 跳轉命令組合使用 如:dw 表示刪除光標所在位置到下一個單詞詞首所有字符#dw,#de,#db :#dw表示 刪除當前光標所在處及向后第#個單詞詞首所有字符 dd:刪除當前光標所在行#dd:刪除包含當前光標所在行內往下的 # 行,末行模式下:
末行模式下 位置符號StartADD, EndADDd.:表示當前行$:最后一行+#:向下的#行$-#:向上的#行 末行模式下,刪除命令d可以跟以上 位置符號 相結合使用 StartADD, EndADDd:刪除 StartADD 到 EndADDd 位置的所有行,例如:10, 15d:刪除 10 到 15 行所有內容d:刪除光標所在行,同dd?8. 粘貼命令 p
? 命令模式:
p(小寫p):粘貼至光標所在字符的后面P(大寫P):粘貼至光標所在字符的前面9. 復制命令 y
用法同d命令
命令模式yy:復制當前行yw (y#w,ye,y#e,yb,y#b):復制光標當前位置到下個單詞詞首內容.#代表數字y#G:復制當前位置當#行處的所有內容末行模式StartADD,EndADDy:復制StartADD到EndADDd位置的所有行,例如:10,15y:復制10到15行所有內容+3y:復制當前位置向下3行10.視圖模式 v
?命令模式:
v:按字符選取,鍵盤控制光標 劃過 的區域被選取 V:按矩形選取,鍵盤控制光標劃過的行被選取小操作:在命令模式下使用 v 命令進入視圖模式選取數據,之后直接使用 y 命令進行復制,然后再使用 p 命令粘貼到指定位置。
11. 修改 c :
命令模式:
? ?使用 c 會先刪除選中內容,再轉換為輸入模式
12. 替換 r,后面有更強的全局替換
命令模式:
r:單字符替換,會替換光標選中字符 R:替換模式,可以做字符替換。13.?撤銷與恢復:u(undo)、Ctrl + z
命令模式:
u:撤銷前一次編輯操作 #u:直接撤銷#次操作 Ctrl+r:恢復上一步14.?重復前一次編輯操作 .
命令模式:
.:比如 上一次dd刪除了一行,現在輸入.就可以重復dd刪除行的操作15. 查找:
末行模式:
# PATTERN 表示正則表達式 /PATTERN:從當前位置向后查找 ?PATTERN:從當前位置向前查找 n:向下查找 N:向上查找找到后按回車,此時便可以使用 n/N 進行逐個定位,定位到指定位置之后,你可以使用“命令模式”下的命令進行編輯。
16. 查找并替換
在末行模式下使用 s 命令【s:表示 substitute 】:{作用范圍}s/{目標}/{替換}/{替換標志}ADDR1,ADDR2 表示地址;比如1,$表示全文 (%也表示全文)g:表示全局替換i:表示忽略大小寫 例如: :%s/dfg1/heihei/gi # 表示在全文范圍(%)內,查找(dfg1)并替換為(heihei), 所有查找到的都會被替換(g),且忽略大小寫(i)17. vim 打開多個文件
vim FILE1 FILE2 FILE3末行模式下:next 切換到下一個文件:prev 切換到上一個文件:last 切換到最后一個文件:first 切換到第一個文件 退出多個文件qa:全部退出18.分屏顯示一個文件
vim打開文件后Ctrl+w,s:水平拆分窗口 【先按 Ctrl+w , 之后松手再去按 s】Ctrl+w,v:垂直拆分窗口 【先按 Ctrl+w , 之后松手再去按 v】 在窗口間切換光標Ctrl+w,ARROW 【先按 Ctrl+w , 之后松手再去按 方向鍵】比如 Ctrl+w,→:(使用箭頭方向鍵)光標切換到右邊的窗口比如 Ctrl+w,h(左), j(下), k(上), l(右) 也可以切換窗口 在末行模式下:qa退出所有窗口19.分窗口編輯多個文件
vim -o:水平分割顯示 vim -O:垂直分割顯示 例如:vim -o /etc/rc.sysinit /etc/inittab :水平分割顯示/etc/rc.sysinit和/etc/inittab 這2個文件其實也可以先一次打開多個文件(參考17),之后結合上面的命令整出多個窗口,大家可以自己思考去折騰。
20.另存為(w + path),可以選擇指定內容
末行模式下:
w:表示保存當前文件 w /path/to/somewhere:將當前文件另存為到路徑指定的地方 ADDR1,ADDR2 w /path/to/somewhere:將ADDR1到ADDR2指定的地址文本 另存為到路徑指定的地方 例如::7,8 w ./heihei.mc # 將當前文件的7-8行寫到 heihei.mc 文件內,文件不存在則創建21.將另一個文件的內容填充在當前文件中( r 表示讀)
末行模式下r: /path/to/somefile 例如:vim /etc/rc.sysinit 打開文件后,末行模式 輸入 :r /etc/inittab :會將 inittab文件的所有內容附加到rc.sysinit文件光標所在的位置22.跟shell交互(vim 末行模式執行shell)
末行模式 ! command 即可 例如: ! ls /etc/:會列出/ect目錄下所有文件及目錄 按 enter 后回到 vim 編輯狀態23. 高級話題
在末行模式下 ①顯示或取消行號set nu(set number):顯示行號set nonu:取消顯示行號 ②顯示忽略或區分字符大小寫set ic (set ignorecase):忽略大小寫set noignorecase:區分大小寫 ③設定自動縮進set ai(set autoindent):自動縮進set noai:取消自動縮進 ④查找到的文本高亮或取消高亮顯示set hlsearch:高亮顯示搜索到的文本set nohlsearch:取消高亮顯示搜索到的文本 ⑤語法高亮syntax on:打開語法高亮顯示syntax off:關閉語法高亮顯示24.vim配置文件
全局vim配置文件:/etc/vimrc 個人vim配置文件:~/.vimrc [root@sky ~]# echo "set nu" >> /root/.vimrc # root用戶用vim打開文件時,顯示行號。參考自:https://www.cnblogs.com/libaoliang/articles/6961676.html
PS:在原文的基礎上根據自己的理解,對一些點做了補充,力求更加能讓讀者明白。
總結
以上是生活随笔為你收集整理的Vim 上手指南【基础、中级】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 JavaScript 进行 Ba
- 下一篇: 解决 /usr/share/git-co