30分鐘入門Vim

更多精彩內容,請關注微信公衆號:後端技術小屋redis

30分鐘入門Vim

Vim是從vi發展出來的一個文本編輯器,是Linux後端開發人員必會工具之一,被廣大碼農戲稱爲編輯器之神(神之編輯器是Emacs,筆者沒用過,看起來段位比Vim更高)。本文簡單介紹Vim中不一樣的模式以及每一個模式下的高頻命令,但願可以引領初學者快速入門。vim

Vim的模式

Vim中有多種模式,這種獨特的設計容易讓不少初學者產生混淆。僅經過鍵盤,即可在Vim的多種模式之間自由切換。後端

普通模式

Vim啓動以後的默認模式是普通模式,這一點與大多數編輯器正好相反(默認是插入模式)。在這種模式下,用戶可執行移動光標、刪除文本等操做。例如跳轉到第n行,刪除第n行數據。bash

插入模式

在這個模式中,大多數按鍵都會向當前光標處插入文本。微信

選擇模式

選擇模式與Windows下用鼠標選中某一段文本類似。Vim的獨特之處在於,只須要經過按鍵便可選中某一段文本。編輯器

命令模式

在命令模式下,能夠輸入Vim命令並由Vim執行。一般在這種模式下執行搜索、替換、保存文件、退出文件等命令分佈式

模式之間的切換

  • 插入模式下,輸入"Esc",進入普通模式
  • 普通模式下,輸入"i"(或"a", "o" 大小寫皆可,可是有不一樣的含義), 進入插入模式
  • 普通模式下,輸入":"(或"/", "?", "!"),進入命令模式
  • 普通模式下,輸入"v"(或"V"),進入選擇模式

Vim經常使用命令

文件導航

在普通模式下,可執行如下命令可以使光標快速到達目標處:函數

gg        跳轉到當前文件第一行
G         跳轉到當前文件最後一行
<n>%      跳轉到當前文件的n%處

^         跳到光標當前行的開始
$         跳到光標當前行的結尾
f <char>  跳轉到當前行光標後第一個<char>的前一個位置

*         光標所在處單詞高亮,並跳轉到下一個相同單詞處
#         光標所在處單詞高亮,並跳轉到上一個相同單詞處

%         跳轉當前光標處括號("[", "{", "(")相配對的括號
{         跳轉到當前段落的開頭
}         跳轉到當前段落的結尾
(         跳轉到當前句子的開頭
)         跳轉到當前句子的結尾
[[        跳轉至上一個函數/類(要求C++代碼中'{'必須單獨佔一行)
]]        跳轉至下一個函數(要求同上)

CTRL + O  跳轉到歷史光標位置列表的前一個位置處
CTRL + I  跳轉到歷史光標位置列表的後一個位置處

mx        設置書籤,x只能是a-z的26個字母
`x        跳轉到書籤處

zR        展開代碼摺疊

文件編輯

在普通模式下,可執行如下命令對文件進行編輯工具

x         刪除光標位置的字符
dw        刪除光標位置的單詞
dt<char>  刪除光標以後到第一個字符<char>中間的全部文本(不包括<char>)
dd        刪除當前行
<n>dd     刪除n行
dgg       刪除文件第一行到當前行的全部文本
dG        刪除當前行到文件最後一行的全部文本

>>        當前代碼行增長縮進
<<        當前代碼行減少縮進
n>>       對n行增長縮進
n<<       對n行減少縮進
=         格式化當前行代碼

r<char>   對光標位置的字符進行替換,新字符爲<char>

yy        將當前行復制到緩衝區
<n>yy     複製n行到緩衝區
p         將緩衝區複製到下一行
P         將緩衝區複製到上一行
J         將下一行文本合併到當前行

o         在光標下一行增長一空行, 光標跳轉至空行開頭,並進入插入模式
O         在光標上一行增長一空行, 光標跳轉至空行開頭,並進入插入模式

文本選擇

在選擇模式下,可執行如下命令進行文本選擇源碼分析

v         按v進入行選擇模式,接着按Up或者Down鍵選擇多行
V         按V進入列選擇模式,接着按UP或者Down鍵選擇行範圍,按Left或Right鍵選擇列範圍。

當選中了目標文本以後,咱們即可對選中文本進行復制(y與p組合)、刪除(d)、改寫。

文本搜索與替換

在命令模式下,可執行如下命令對文本進行搜索和替換

/<keyword>                              文件中向下搜索<keyword>
?<keyword>                              文件中向上搜索<keyword>
n                                       若是使用`/<keyword>`搜索,跳轉到匹配列表的下一個位置;不然跳轉到匹配列表的上一個位置
N                                       若是使用`/<keyword>`搜索,跳轉到匹配列表的上一個位置;不然跳轉到匹配列表的下一個位置

/c<keyword>                             文件中搜索<keyword>,忽略大小寫

:s/keyword1/keyword2/g                  將文件中的keyword1所有替換成keyword2
:1,100s/keyword1/keyword2/g             將文件中1到100行的keyword1所有替換成keyword2
:1,100s/keyword1/keyword2/gc            將文件中1到100行的keyword1替換成keyword2,針對每次替換顯示確認對話框

:!<bash command>                        退出vim窗口後執行bash命令,再返回vim窗口

:%!xxd                                  以十六進制查看文件內容 
:%!xxd -r                               恢復原狀

:set fileencoding                       查看當前文件編碼

:goto <offset>                          跳轉到文件中偏移量爲<offset>的位置

一些經常使用的組合操做

格式化代碼

ggvG=   格式化文件中全部代碼

在文本中插入一列

V       首先按V進入列選擇模式,而後經過Left/Right, Up/Down選擇插入列的位置
I       按I進行插入模式,而後輸入文本abc,可看到全部行都插入了一列abc

多行復制

v       首先按v進入行選擇模式,而後經過Up/Down鍵選擇多行
y       將選中的多行復制到緩衝區中
        光標跳轉到要粘貼的位置
p       將緩衝區中的多行復制到光標位置

將某列文本轉化成大寫/小寫

V       按V進入列選擇模式,而後經過Left/Right, Up/Down選擇插入列的位置
U       按U將選中的一列文本轉化爲大寫;按u則將其轉化爲小寫

推薦閱讀

更多精彩內容,請掃碼關注微信公衆號:後端技術小屋。若是以爲文章對你有幫助的話,請多多分享、轉發、在看。

二維碼

相關文章
相關標籤/搜索