1. 程式人生 > >vim編輯器常用技巧

vim編輯器常用技巧

編輯器 nag 當前 art 正則 51cto http nor b-s

(一).寫作緣由:

在使用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編輯器常用技巧