vim編輯器常用技巧
在使用linux的過程中,無論是運維管理還是普通用戶都難免對操作文件,擁有一款得心應手的編輯器是必不可少的。可以說絕大部分使用者都是使用的vi/vim編輯器,不僅僅是因為它是linux系統默認安裝了的軟件,還因為它體積很小,功能強大。
vim(VI iMproved)編輯器可以說是vi(visual interface)的擴展版,vim支持語法高亮等特性,以及各種高效率的操作。使得編輯文件的效率得到提高,當然這需要使用者對其相對較熟悉。
(二).vim的常見模式:
(1).vim的模式非常多,這裏只介紹一部分模式,包括編輯模式,插入模式,末行模式,本文也包含替換模式和可視化模式的內容。
a.編輯模式:就是使用vim打開文件或者直接輸入vim之後的模式,左下角沒什麽特殊的提示,如下兩圖:
b.插入模式:一般按i,a,s,o或其大寫等能進入插入模式,在這個模式下輸入的內容會寫到文件。如下圖,在左下角會提示編輯器此時正處於該狀態:
c.末行模式:此模式是在編輯模式下輸入':'後進入的模式,該模式下的功能很多包括執行一些其他shell命令等,如下圖所示:
d.替換模式:該模式是在編輯模式下按R鍵進入,在該模式下對文本的操作是替換操作,和覆蓋差不多,如下圖:
e.可視化模式:這種模式和windows裏面的多選差不多,在編輯模式下按v或者V鍵能進入該模式,可以對選中的內容進行操作,如下圖:
(2).這些模式之間是可以相互轉換的,下圖描述了上面幾種模式的相互轉換:
(三).vim的常用技巧:
(1).打開文件:
vim filename: 打開名為filename的文件,光標處於文件的開始位置。
vim +n filename: 打開文件後,直接讓光標處於第n行的行首。
vim + filename: 打開文件後直接處於最後一行行首(註意加號兩邊是空格)。
vim /pattern filename: 打開文件後使光標定位到第一次被pattern匹配到的模式位置(pattern是匹配模式,之後要確定一下,如下圖:)
(2).關閉文件:一般在末行模式或者編輯模式下關閉文件
末行模式下:
q: 退出(不會保存內容,若此時編輯了內容,是不能退的,會讓你確認是否保存)
wq: 保存並退出
q!: 不保存並退出
w: 保存
w!: 強制保存(需要特定權限)
x: 與wq一樣
編輯模式下:
zz: 保存退出
(3).編輯器的一些常見設置:可以更改/etc/vimrc文件或者~/.vimrc,在末行模式下添加如下內容,也可以在末行模式下執行如下內容:
:set nu 讓編輯器行號(nu為number)
:syntax on 開啟語法高亮
:set ts=4 設置tab長度為4
:set autoindent 設置自動對齊
:set cindent C語言編碼時,內嵌代碼自動縮進
這個設置完全可以按自己的喜好設置,網上很多,這裏就不一一例舉了。
(4).光標移動:
a.逐個字符移動
h: 左移光標
l: 上移光標
j: 下移光標
k: 右移光標
數字n與以上幾個鍵組合: 可一次移動n個字符(例如3j: 光標從當前位置開始下移三個位置)
b.逐個單詞移動
w: 移到下個單詞詞首
e: 移到當前或下一個單詞的詞尾
b: 跳到當前或上一個單詞的詞首
數字鍵n與上面的鍵組合: 可一次移動n個單詞位置(例如5w: 向後移動五個單詞的位置,且到單詞首字母位置)
(5).行內跳轉:
0: 跳到行首(絕對行首)
^: 跳到行首(相對行首)
$: 跳到行尾
(6).行間跳轉:
G: 跳到最後行
gg: 跳到第一行
n + G: 跳轉到第n行
在末行模式下跳轉只需輸入行號即可跳轉,如下圖:
(7).翻屏操作:
Ctrl + f: 向下翻一屏
Ctrl + b: 向上翻一屏
Ctrl + d: 向下翻半屏
Ctrl + u: 向上翻半屏
(8).刪除單個字符:
x: 刪除光標所在處的單個字符
nx: 刪除光標所在處及向後的共n個字符
(9).刪除命令d:
a.編輯模式下,與跳轉命令組合使用可以刪除多少內容:
dw: 刪除一個單詞
dd: 刪除當前光標所在行
ndd: 刪除包括當前光標所在行內的n行
b.末行模式下
m, nd:刪除m到n行
., +5d:刪除當前行到當前行之後的5行(共5行)
., 100d:刪除當前航到100行
., $-9d:刪除當前行到倒數第10行
c.說明: 刪除的內容並沒有被立即清空,而是在內存中,最後一次刪除的內容可用於粘貼
(10).粘貼命令:
p: 如果刪除或復制為整行內容,則粘貼到光標所在行的下方,如果復制或者刪除的內容不是整行,則粘貼到光標所在字符的後面
P: 如果刪除或復制為整行內容,則粘貼到光標所在行的上方,如果復制或者刪除的內容不是整行,則粘貼到光標所在字符的前面
(11).復制命令y:
用法與d命令一樣,將d換成y即可,也可在變模式和末行模式下進行,使用方法完全一樣。
(12).修改命令c: 先刪除內容,再轉換為插入模式。
用法與d命令一樣,將d換成c即可,也可在變換,如: c$: 先刪除當前光標所在位置到末行的內容,然後進入插入模式。
(13).替換命令r:
按了r之後,輸入要替換成的字符
也可與n組合,達到同時替換多個字符(一般不會那麽幹,很少有意義)
R:直接進入替換模式,輸入的內容將覆蓋原有的內容
(14).撤銷編輯:
u: 撤銷前一次編輯操做
nu:撤銷前n次操作(一般只保留50次修改操作)
撤銷剛剛撤銷的操作:Ctrl + r
(15).重復前一次編輯操作
.: 按'.'即可重復上一次操作,例如:dd會後,再按'.',則會繼續執行dd命令
(16).可視化模式(如下圖):
v: 按字符選取
V: 按矩形選取
(17).查找替換:
/pattern:從文件首向尾部查找
?pattern:從當前光標位置向文件首部查找
n:跳到下一個匹配到的對象
N:跳到上一個匹配到的對象
(18).查找並替換(在末行模式下):
m, ns/pattern/string/g(全局替換)i(忽略大小寫)
m, ns@pattern@string@gi(與上面效果完全一樣)
在第m行到n行搜索partern(可以正則),替換成string,即使一行有多個全部替換,忽略大小寫
例如:
s/pattern/string/: 替換當前行匹配到的pattern的第一個對象為string
s/pattern/string/g: 替換當前行匹配到的pattern的所有對象為string
m, $s/pattern/string/: 替換從m行到最後一行匹配到的pattern的第一個對象為string
m, $s/pattern/string/g: 替換從m行到最後一行匹配到的pattern的所有對象為string
., $s/pattern/string/g: 替換從當前行到最後一行匹配到的pattern的所有對象為string
1, $s/pattern/string/g: 替換文本中所有的匹配到的pattern為string
%s/pattern/string/: 替換每一行匹配到的pattern的第一個對象為string
%s/pattern/string/g: 替換每一行匹配到的pattern的所有對象為string
說明: '/'與'@'效果在這裏是一樣的。
(四).如有不足之處,還請斧正:
這裏只是寫了vim的一少部分常用的功能,若你所找的答案不在其中,還請使用man幫助或者其他相關資料進行查閱。
vim編輯器常用技巧