vi基礎學習總結

標籤(空格分隔): vi 總結linux


vi是幾乎全部類Unix/Linux系統下都默認裝有的經常使用文本編輯工具。本文記錄初學vi的一些小知識。shell

0.界面模式

在命令行使用「vi」編輯文檔時,包含通常模式、命令行模式、編輯模式。
使用vi filename打開文件,就進入通常模式vim

  • 通常模式 <-> 命令行模式
    在通常模式界面使用符號「:」、「/」、「?」能夠進入命令行模式,反之使用鍵盤左上角的「Esc」按鍵就能夠從命令行模式回到通常模式。app

  • 通常模式 <-> 插入模式
    在通常模式界面按下「i」、「I」、「a」、「A」、「o」、「O」、「r」、「R」字符就能夠進入插入模式,反之使用鍵盤左上角的「Esc」按鍵就能夠從插入模式回到通常模式。其中的字符具體含義以下:
i:insert,在光標當前處插入
I:Insert,在光標所在行的行首插入,在第一個非空白字符前插入
a:append,在光標所在位置以後的一個符後插入
A:Append,在光標所在行的行尾插入
o:在光標所在行的下面,另起一行插入
O:在光標所在行的上面,另起一行插入
r:replace,替換光標所在位置的那一個字符,只替換一次
R:Replace,不斷替換光標所在位置的字符,每替換字符光標都會日後移動,直到按下「Esc」爲止。
  • 命令行模式和插入模式不能直接相互進入,須要先進入通常模式才能進入另外一個模式。

1.光標移動/定位

在通常模式下移動光標狀況相對複雜,能夠分爲如下幾種狀況。工具

  • 移動字符
1)可使用上下左右的箭頭來移動
2)使用字母
 h:光標左移一個字符的距離
 j:光標向下移動一行
 k:光標向上移動一行
 l:光標右移一個字符的距離
  • 移動單詞/字
w:光標日後移動,到達下一個單詞(含標點)的詞首處
W:與w同,忽略標點符號
e:光標往前移動,到達下一個單詞(含標點)的詞尾處
E:與e同,忽略標點符號
b:光標往前移動,達到本單詞(含標點)的詞首。若是當前位子是空白則達到左邊第一個單詞的詞首
B:與b同,忽略標點符號
ge:光標往前移動,到達前一個單詞的詞尾處
  • 行移動
符號^(shift+數字鍵6):光標移動到行首
數字0::光標移動到行首
符號$(美圓符號):光標移動到行尾
字符組合「g_」:光標移動到行尾
nh:n爲數字,在當前行往左移動n個字符
nj:n爲數字,向下移動n行
nk:n爲數字,向上移動n行
nl:n爲數字,在當前行往右移動n個字符
N + Enter:n爲數字,向下移動n行
  • 移動頁
Ctrl + d:向上移動半頁                 Ctrl + u:向下移動半頁
Ctrl + f:向上移動一頁                 Ctrl + b:向下移動一頁
  • 全文移動
gg:光標移動到文件第一行的行首
G:光標移動到文件最後一行的行首
nG:n爲數字,光標移動到文件第n行的行首

2.編輯操做

  • 複製
yy:複製光標所在行整行
nyy:n是數字,複製光標所在行整行及往下的n行
y1G:複製文件的第一行到光標所在行
yG:複製光標所在行到文件的最後一行
y0:複製光標所在行的行首字符到光標所在位置的字符之間的內容
y$:複製光標所在位置的字符到該行行尾字符之間的內容
  • 刪除、剪切
x:刪除右邊的一個字符,相似鍵盤的delete鍵
X:刪除左邊的一個字符,相似鍵盤的BackSpace鍵
dd:刪除/剪切當前行
ndd:n是數字,刪除/剪切當前行及向下n行的數據
d1G:刪除/剪切文件第一行到光標所在行之間的內容
dG:刪除/剪切光標所在行到文件最後一行之間的內容
d0:刪除/剪切光標所在行行首字符到光標所在字符之間的內容
d$:刪除/剪切光標所在位置的字符到該行的行尾字符之間的內容
  • 粘貼
p:在光標所在行的下一行粘貼數據
P:在光標所在行的上一行粘貼數據

3.查找

/word:向下查找字符串「word」
?word:向上查找字符串「word」
n:重複執行前一個查找操做
N:「反向」執行前一個查找操做,與n相反

4.替換

r:replace,替換光標所在位置的那一個字符,只替換一次
R:Replace,不斷替換光標所在位置的字符,每替換字符光標都會日後移動,直到按下「Esc」爲止。
「:n1,n2s/old/new/g」:n1和n2是數字,數字n2後的是小寫s。表示把第n1行到第n2行之間的字符串「old」都換成「new」。經常使用「:1,$/old/new/g」
「:n1,n2s/old/new/gc」:做用同上。最後多了個字符「c」,是confirm的首字母,表示每一個操做都會提示確認纔會替換

5.選擇內容

相似「視圖模式」下的選擇,最讓人以爲新奇的莫過於塊選擇了。命令行

v:字符選擇,結合光標的上下左右使用
V:行選擇,結合光標的行上下移動使用
Ctrl + v:塊選擇,結合光標移動使用

當完成選擇以後,能夠進行刪除、複製、剪切等操做。code

6.其餘經常使用操做

  • 保存、退出
「:w」:保存(必需要有文件寫權限)
「:wq」:保存並退出(必需要有文件寫權限)
「:wq!」:保存並強制退出(必需要有文件寫權限)
「:q」:退出(沒有修改過文件內容)
「:q!」:強制退出(會放棄修改)
ZZ:保存而且退出(必需要有文件寫權限)
「:w filename」:另存爲filename文件
「:n1,n2 w filename」:把文件的第n1行到第n2行內容另存爲filename文件
  • 導入其餘文件內容
「:r filename」:把文件filename的內容導入到當前文件,插入到光標所在行以後
  • 撤銷、重複執行前一個操做
u:撤銷前一個操做,即放棄前一個操做的更改
小數點「.」:重複執行前一個操做,即再作一次
Ctrl + r:重作前一個操做,能夠這樣理解,先撤銷已作的更改,而後再重複以前的更改。
J:將下一行數據拉到光標所在行以後,這樣至關於剪切下一行後粘貼到該行的行尾,文件行數少1。
  • 臨時執行Linux命令
「:! command」:在通常模式下,可臨時切換到shell界面執行命令,執行完畢後按下回傳就回到文件內的通常模式下。可用於臨時查看信息等,方便。
  • 多文件編輯
    使用「vi 文件1 文件2 文件3」能夠打開多個文件。
「:files」:列出vi打開的全部文件
「:n」:進入下一個被vi打開的文件編輯
「:N」:進入前一個被vi打開的文件編輯
  • 多窗口編輯及切換
    已經打開了一個文件在編輯,此時想要打開另外一個文件,有多窗口真的很方便。多窗口方式比多文件編輯方式要直觀不少,值得推薦6666。
「:sp filename」:水平分割窗口,並打開filename文件
「:vsp filename」:沿垂直方向分割窗口,並打開filename文件
Ctrl + w + j或k:將光標往上或者往下移動到內窗口,進去後就能夠進行常規操做了

保存vi偏好設置文檔

打開文件「vi ~/.vimrc」,經過set來設置,經常使用的有:
set nu
set ruler
set hlsearch
set showmode
syntax on
...
相關文章
相關標籤/搜索