vim文本編輯器不同于nano的是其功能非常強大,強大的功能還支持各種快捷鍵,讓我們編輯文本的時候更方便更快捷。
本文將會按照下圖所展示的功能來對命令一一講解,
-
打開文件:
vim file:直接打開文件file
vim +# file:打開文件后光標在第#行顯示
vim +/partern:打開文件后,直接讓光標在第一個被partern匹配到的行的行首處顯示
vim + file:直接打開文件,光標在最后一行顯示
vim -b file:二進制的方式打開文件
vim -d file1 file2…..:比較多個文件
vim -m file:只讀方式打開
vim -e file:打開文件后直接進入編輯模式
注意:如果文件存在,則直接打開顯示的內容,如果文件不存在,則在編輯完成之后在末行模式輸入wq或者x保存文件時才會寫入到硬盤中。
-
編輯界面:
vim 進入到文本界面后,我們首先進入的命令模式,在這個界面我們通常需要重復的切換三個模式來進行編輯操作,下面我們來介紹下VIM的三種主要模式及互相的切換方法。
命令模式:可以使用快捷鍵移動光標,復制,粘貼,刪除或替換字符等操作
插入模式:此時我們可以編輯文本,修改文本中的內容
末行模式:可以執行,替換,刪除 ,保存退出等操作
各個模式之間的切換方法:
命令模式 —–(:)—–> 末行模式
命令模式 -[iIaAoO]–> 插入模式
插入模式—(ESC)—-> 命令模式
插入模式–(ESC)(:)—> 末行模式
末行模式—-(ESC)—> 命令模式
末行模式-(ESC)[iIaAoO]-> 插入模式
【iIaAoO】插入模式詳解:
i:在光標所在處插入要輸入的內容
I:在光標所在處的行首插入要輸入的內容
a:在當前光標所在處的后面插入要輸入的內容
A:在當前光標所在處的行尾插入要輸入的內容
o:在當前光標所在行的下一行的行首插入要輸入的內容(新建行)
O:在當前光標所在行的上一行的行尾部插入要輸入的內容(新建行)
-
關閉文件:
在末行模式下輸入:
q:退出
q?。簭娭仆顺?/p>
wq:保存退出
x:保存退出
r /path/to/somefile:讀file到文本中
w /path/to/somefile:讀當前文本中的內容到file中
!command:命令的輸出會在執行vim命令之前的窗口顯示
r!command:命令的輸出結果會在文本中顯示
命令模式:
ZZ:保存退出
ZQ:退出不保存
vim編輯器的命令分類:光標移動和跳轉、命令模式、文本編輯、地址定界、查找及替換、可視化編輯、文本塊選擇,多文件模式。
-
光標移動和跳轉命令:
行間跳轉:
#G:將光標移動到第#行的行首
1G:將光標移動到第一行的行首 gg也可
G :將光標移動到最后一行的行首
^:移動到行的第一個單詞首部
$:移動到行的最后一個單詞尾部
0:移動到行首部
單詞間跳轉: web
w:向后移動到下一個單詞的行首
e:向后移動到下一個單詞的行尾
b:向前移動到下一個單詞的行尾部
段落間跳轉:
}:向下移動到下一段的行首
{:向上移動到上一段的行首
句子間跳轉:
):下一句
(:上一句
當前頁跳轉:
L:頁面尾部 —low
M:頁面中間 —middle
H:頁面首部 —head
按屏幕跳轉:fb
ctrl+b:向前移動一屏
ctrl+f:向下移動一屏—-和more less 快捷鍵一致
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
上下左右移動:
h:向左
j:向下
k:向上
l:向右
-
命令模式相關命令:
.:重復上一次操作,#. 重復前一個操作n次
u:撤銷上一次的操作,也可#u
ctrl+r:撤銷撤銷
U:撤銷當前光標在此行的所有操作
x:刪除當前光標所在的字符,向后刪,也可以#x
r:按下r在按下要替換的字符即可替換
R:直接進入替換模式,此時可以直接當光標所在處需要替換的字符,與r的區別是r每替換一次則需要按一下r。
D:從當前光標開始刪除至行尾部同d$
~:字符大小寫轉換,小轉大,大轉小
xp: 交換光標所在處的字符及其后面字符的位置
刪除:dd刪除整行,d^ 從當前字符開始刪除到行首,同理d$,d0,d[web],#dd(向后刪除#行,包括當前行)
改變:cc刪除整行,和dd的區別主要時執行完cc操作后直接由命令模式進入插入模式,選項同d類似。
復制:yy復制整行,y^–>p 從當前字符開始復制到行首并粘貼,同理y$,y0,y[web],#yy(向后復制#行,包括當前行)
粘貼:p:如果粘貼的是整行,則粘貼在當前光標所在行的下方,否則粘貼當前光標所在處的前方。
P:如果粘貼的是整行,則粘貼在當前光標所在行的上方,否則粘貼當前光標所在處的前方。
應用小技巧:100+i+naruto+esc,在光標所在處插入100個naruto
-
地址定界相關命令:(在末行模式下,配合編輯命令使用,如y、d、w,r等)
%:全文
.:當前行
$:最后一行
a,b:a行開始到b行結束
a,+#:a行開始到下面#行結束
/root/,/user/:從第一個匹配到的root開始,到第一個匹配到user的結束
#,/root/:從第#行開始,到第一次匹配到root結束
/root/,$:從第一次匹配到的root開始到最后一行結束
-
查找相關命令:
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
向上查找匹配到的字符:N
向上查找匹配到的字符:n
-
查找并替換相關命令:
vim的末行查找并替換的功能與前面接觸過的sed命令類似。
格式:地址定界s@要查找的內容@要替換的內容@ig
要查找的內容:可以使用正則表達時的匹配模式
替換的內容:不能使用模式,只能使用引用功能 \1,\2,還可以使用&,來查找匹配前面匹配到的字符。
g:全局替換,默認情況下,每一行只替換第一次匹配到的
i:忽略大小寫
gc:全局替換,替換時交互式詢問
-
可視化模式:在windows中我們通常可以用鼠標選擇文章的某一部分內容,linux也可以實現。
v:可以按字符選擇,配合上下左右鍵來選擇需要的內容
V:可以按行選擇
-
多文件模式
多文件模式:vim file1 file2 file3 ……..
:next 下一個 :prev 前一個
:first 第一個 :last 最后一個
-
使用多個文件分割:
-
單文件窗口分割:
-
定制vim的工作特性:
:qall 保存退出 :wqall 保存所有退出 :wall 保存所有
vim -o|O:水平或者垂直分割文件顯示
各個窗口間切換方法:ctrl+ww 或ctrl+w+向上下左右箭頭
ctrl + w,s 水平分割 (split水平)
ctrl + w,v 垂直分割 (vertical垂直)
ctrl + w,q 取消相鄰窗口 quit退出
ctrl + w,o 取消全部窗口 gameover
全局:/etc/vimrc
個人:~/.vimrc
我們也可以通過在末行模式輸入相關命令來對vim編輯器進行設置:
行首顯示行號:
顯示:set nu
取消:set nonu
括號成對匹配:
匹配:set sm
取消:set nosm
自動縮進
啟用:set ai
取消:set noai
高亮搜索
啟用:set hlsearch
取消:set nohlsearch
忽略字符的大小寫
啟用:set ic
禁用:set noic
文本格式
啟用:fileformate=unix
禁用:fileformate=dos
設置文本寬度
set textwidth=65
set wrapmargin=15
vim寄存器:
vim有26個命令寄存器和1個無名寄存器,常存放不同的剪切板內容,可以不同會話間共享,windows該功能的寄存器就一個,linux中該寄存器的
命名規則為a…z,默認情況下我們使用的是無名寄存器。linux還有10個數字寄存器,用0-9表示,0存放最近復制的內容,1存放最近刪除的內
容,當新的文本變更和刪除時,1緩存2,2轉存3,以此類推,數字寄存器不能在不同會話間共享。
例如:#“tyy 表示復制#行至t寄存器中,tp表示將t寄存器中的內容粘貼
補充:vim中的 \033 –> ctrl +v +[ (同時按)
練習:
1、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符
:%s@^[[:space:]]\+@@g
2、復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號
:%s@^[[:space:]]\+@#&@g
3、如何設置tab縮進為4個字符?
echo "tabstop=4" >> /etc/vimrc
4、復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log;
:%s@/etc\/sysconfig\/init@\/var\/log@g
5、刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號;
:%s@^#\([[:space:]]\+\)@\1@
原創文章,作者:Naruto,如若轉載,請注明出處:http://www.www58058.com/32388