本文的初衷shell
從知道 vim 開始我就有心學習並嘗試過幾回,每次都是暫時的心血來潮,最終所有不了了之,就連最基本的 vimtutor 我都是學個兩三節就半途而廢,因此此次乾脆寫篇文章,利用幾回學習把這篇文章完善起來。既方便本身堅持學習記錄,又方便在以後使用中查看和複習。vim
若是正在看這篇文章的你已是個老手,或者已經完整練過屢次 vimtutor ,那麼很遺憾本文並不會對你有更多的幫助。windows
Windows 安裝 Git Bashbash
Linux 和 MacOS 無需安裝app
Vim 中的快鍵鍵都是有語義的,若是瞭解下面這些單詞,相信你記住快捷鍵也不是什麼難事。編輯器
quit學習
write/readui
yank(複製)插件
paste命令行
delete
change
find
word
forward/backward
up/down
insert/append
do/undo/redo
replace
Vim 有多種模式,分別是:
啓動 Vim (在終端輸入 vim <回車>
)後,並不能直接輸入字符,vim 默認處於「正常模式」。
「正常模式」通常用於瀏覽文件,也包括一些複製、粘貼、刪除等操做。擊鍵時通常的鍵/鍵組合會被當成功能鍵,而不會鍵入對應的字符。
在此模式下,能夠經過鍵盤在文本中移動光標,移動範圍從小到大是字符、單詞、行、段落和屏幕。
提示:不論位於什麼模式,按下 <Esc>
鍵(有時須要按兩下)都會進入「正常模式」。
「正常模式」下按i
I
a
A
鍵,會進入「插入模式」。
在「插入模式」下,擊鍵時會寫入相應的字符。
「正常模式」下按 :
(冒號)鍵,會進入「冒號模式」。
在「冒號模式」下能夠執行一些輸入並執行一些vim或插件提供的指令,就像在 shell 裏同樣。這些指令包括設置環境、文件操做、調用某個功能等等。
「正常模式」下按 v
V
<Ctrl>+v
,均可以進入「可視模式」。
在「可視模式」下,按方向鍵選擇內容。
注意:
後文中帶尖括號的描述表示鍵盤按鍵,好比 <回車>
是指回車按鍵。
在終端(我這裏在 windows 下使用的 Gitbash)輸入 vim <回車>
便可進入 Vim 編輯器;
輸入 vimtutor <回車>
便可進入 vim 教程。
輸入 vim 文件名 <回車>
便可進入 Vim 編輯器編輯該文件。
此時編輯器處於「正常模式」,也叫「normal 模式」。
咱們稍後提到時再作介紹。
提示:按下 <Esc>
鍵,會回到「正常模式」或者撤消一個不想輸入的命令。
1.1 移動光標
h (左) j (下) k (上) l (右)
請隨意按下字母瞭解如何移動光標。
1.2 Vim 的退出
<Esc> :q!
丟棄修改並退出
<Esc> :wq
保存修改並退出
提示:<Esc>
鍵不是必須的,只是爲了確保當前處於「正常模式」。
1.3 文本編輯之刪除
按 x
鍵刪除一個字符
將光標移動至某個單詞的起始處,按 dw
刪除一個單詞(英文)
按 dd
刪除一整行
按 d$
會從當前光標處刪除至行末
提示: 輸入 d
以後,字母 d 會出如今屏幕的右下角,等待接下來輸入的命令,此時能夠按 <Esc>
撤銷。
1.4 文本編輯之插入
按 i
鍵在光標所在處進入「插入模式」
此時左下角會出現「-- 插入 --」或者「-- INSERT --」的字樣,表示當前處於「插入模式」。
按 I
鍵進入「插入模式」,同時光標會跳到所在行的行首。
此時能夠輸入內容,也能夠選擇按 <Esc>
鍵返回到「正常模式」。
提示:注意大小寫,在 vim 中不少字母的大小寫有着不一樣但類似的功能。
1.5 文本編輯之添加
輸入 a
能夠在光標後進入「插入模式」
輸入 A
能夠在光標所在行的行末進入「插入模式」
提示:a
i
I
A
都會帶您進入插入模式,唯一的區別在於字符插入的位置。
2.1 關於命令和對象
前文中咱們學習的命令都是 d
和某個動做一塊兒構成的。 好比 d
和 w
表示刪除該單詞;d
和 $
表示刪除至行末。
格式以下: d motion
d
- 刪除操做符
motion
- 操做符的操做對象
介紹幾個簡單的動做:
w
- 從當前光標當前位置直到下一個單詞起始處,不包括它的第一個字符。
e
- 從當前光標當前位置直到單詞末尾,包括最後一個字符。
$
- 從當前光標當前位置直到當前行末。
提示:在「正常模式」下僅按表明相應動做的鍵而不使用操做符,會看到光標的移動正如上面的動做列表所描述的同樣。
2.2 使用計數指定動做
2w
使光標向前移動兩個單詞
3e
使光標移動到第三個單詞的末尾
0
使光標移動到行首(^
符號也能夠作到這一點,只是按起來沒有 0
方便)
提示:如今你必定也能夠聯想到 2h
就表示光標向前移動兩個字符,3j
就表示光標向下移動三行等等;你能夠任意組合來練習。
提示:輸入數字時你會發現右下角也出現了相應的數字。
2.3 使用計數來刪除更多
格式以下: d number motion
d2w
或者 2dw
刪除兩個單詞
d2d
或者 2dd
刪除兩行
2.4 撤銷類命令
u
撤銷上一操做
U
撤銷對整行的操做
<Ctrl> r
反撤銷(windows)
3.1 置入類命令
p
粘貼
使用 dd
命令刪除一整行內容,而後將光標移動到想要粘貼的位置 上方,輸入 p
將該行粘貼置入
3.2 替換類命令
將光標移動到想要替換的字符前,輸入 r
回車,接着輸入想要的字符,就會把光標處的字符替換。
按 R
鍵回車進入「替換模式」能夠連續替換多個字符。
提示:「替換模式」與「插入模式」類似,不過每一個輸入的字符都會刪除一個已有的字符。
3.3 更改類命令
cw
改變文本直到一個單詞的末尾
拆開來看 c
和 w
,c
表示修改,w
表示一個單詞
注意:cw
命令會刪除光標處至該單詞末尾的字符,並直接進入「插入模式」。
提示:修改好內容後記得按 <Esc>
鍵來返回「正常模式」。
3.4 使用 c
更改更多
更改類操做符的工做方式跟刪除類一致。操做格式是:
c [number] motion
c$
表示從光標處開始刪除至行末並進入「插入模式」。
4.1 定位及文件狀態
<Ctrl> g
(Mac)顯示狀態信息行,顯示的內容是當前編輯的文件名和文件中光標位置。
windows 下的 Gitbash 在編輯器下方一直顯示當前光標所在行的信息。
G
跳轉到當前文件最後一行
gg
跳轉到當前文件第一行
行號 G
跳轉到指定行
4.2 搜索類命令
/ 要搜索的字符串 <回車>
光標會跳轉到搜索的此字符串前
? 要搜索的字符串 <回車>
逆向查找
n
查看下一個搜索的匹配項
N
查看上一個搜索的匹配項
<Ctrl> o
回退到最近的一次搜索匹配項的位置
<Ctrl> i
回退到最新的一次搜索匹配項的位置
4.3 配對括號的查找
將光標移動到任意一個 ( { [ ] } )
處,按下 %
光標會跳轉到另外一個對應的括號處
4.4 替換命令
下方几個命令中 old
表明替換前的詞,new
表示替換後的詞
:s/old/new <回車>
替換光標所在行的第一個匹配串
:s/old/new/g <回車>
替換全行的匹配串
:#,#s/old/new/g <回車>
其中兩個 #
號分別表示替換操做的起始行和結尾行,表示替換隻在這之間進行
:%s/old/new/g <回車>
替換整個文件中的每一個匹配串
:%s/old/new/gc <回車>
替換整個文件中的每一個匹配串以前會詢問是否替換
5.1 在 Vim 內執行外部命令
:!外部命令 <回車>
執行外部命令
:!ls
列出所在目錄的文件
提示:
全部的外部命令均可以以這種方式執行,包括帶命令行參數的那些。
全部的 :
命令都必須敲 <回車>
鍵結束。
5.2 保存文件
咱們知道了當前目錄以後,也能夠執行保存命令。
:w TEST
會將當前文件重名爲 TEST 並保存到當前目錄
:!rm TEST
刪除文件
5.3 一個具備選擇性的保存命令
v motion :w fileName
按下 v
鍵,進入「可視模式」,也叫「visual 模式」。
接着移動光標會發現會選中移動過的區域並高亮。
而後按 :
將會看到屏幕底部出現 :'<,'>
接着輸入 w TEST
此時整個命令爲::'<,'> w TEST
,表示將選中內容保存爲命爲 TEST 的文件
5.4 提取和合並文件
:r TEST
將 TEST 文件的內容置入當前文件的當前光標處
提示:還能夠讀取外部命令的輸出。例如, :r !ls
能夠讀取 ls
命令的輸出,並把它放置在光標下面。
6.1 打開類命令
o
在當前光標所在行的下方新起一行,並進入「插入模式」
O
在當前光標所在行的上方新起一行,並進入「插入模式」
6.2 附加類命令
輸入 e
可使在光標英文內容中以單詞爲單位跳轉
6.3 複製粘貼文本
使用操做符 y
複製文本,使用 p
粘貼文本
6.4 設置類命令的選項
輸入 :set xxx
能夠設置 xxx
選項。一些有用的選項以下:
'ic' 'ignorecase'
查找時忽略字母大小寫
'is' 'incsearch'
查找短語時顯示部分匹配
'hls' 'hlsearch'
高亮顯示全部的匹配短語
選項名能夠用完整版本,也能夠用縮略版本。
在選項前加上 no
能夠關閉選項: :set noic
7.1 獲取幫助信息
按下 <F1>
鍵或者 :help <回車>
連續輸入兩次 <Ctrl> w
能夠切換窗口
7.2 建立啓動腳本
.vimrc 文件
7.3 補全功能
使用 <Ctrl> d
能夠查看可能的補全結果
使用 <Tab>
能夠進行命令行補全(Mac)
請確保 Vim 不是在以兼容模式運行: :set nocp
gg
將光標移動到文件的第一行,而後鍵入 dG
以刪除其中的全部行或文本。:1,$d
刪除全部行或文本vim 的使用就像編寫程序同樣,你總要在實踐中去掌握它。好了,如今神器在手,就看能不能熟練使用了。
(完)