Leon's Blogging

Coding blogging for hackers.

Vim Basic

| Comments

最近常在遠端使用,逼得一定要用 vim,也趁這個機會來讓自己對 vim 熟一點~

命令的格式如下,預設 number 是 1

1
[number] [command] object 或者 [command] [number] object

INSEART 模式

1
2
3
4
5
6
i # 在游標前開始進入插入模式
I # 在行首進入插入模式
a # 在游標後進入插入模式
A # 在行尾進入插入模式
o # 將在光標的下方打開新的一行並進入插入模式
O # 將在光標的上方打開新的一行並進入插入模式

位置

1
2
3
4
w  # 從當前光標當前位置直到單字/單詞末尾,包括空格。
e  # 從當前光標當前位置直到單字/單詞末尾,但是 *不* 包括空格。
$  # 從當前光標當前位置直到當前行末。
0  # 從當前光標當前位置直到當前行首。

更改類

1
c # 改變一個單字/單詞的部分或者全部

刪除類

1
2
3
4
5
x  # 刪除光標字
d  # 刪除
dw # 光標處刪除至一個單字/單詞的末尾 
dd # 刪除整一個當前行
d$ # 從當前光標刪除到行末

撤消類

1
2
3
u  # 撤消最後執行的命令
U  # 欲撤消在一行中所做的改動
CTRL-R # 欲撤消以前的撤消命令,恢復以前的操作結果

置入類

1
p  # 將最後一次刪除的內容置入光標之後

替換類

1
2
r [word] # 輸入 r 和一個字符替換光標所在位置的字符
R # 可連續替換多個字符

搜索類

1
2
3
4
/ [word] # 查找字符串
? [word] # 逆向查找字符串
n # 查找同上一次的字符串
N # 向相反方向查找同上一次的字

定位

1
2
3
4
5
6
gg # 跳至第一行
G # 跳至最後一行。
[行號] G # 直接跳到某一行
H # 跳至視窗頂端
M # 跳至視窗中間
L # 跳至視窗底端

配對括號的查找

1
% # 可以查找配對的括號 )]}**,再次按 % 就可以跳回配對的第一個括號處。

修正錯誤

1
2
3
4
:s/old/new # 在一行內替換頭一個字符串 old 為新的字符串 new 
:s/old/new/g # 在一行內替換所有的字符串 old 為新的字符串 new 
:%s/old/new/g # 在文件內替換所有的字符串 old 為新的字符串 new,請輸入 
:%s/old/new/gc # 進行全文替換時詢問用戶確認每個替換需添加 c 選項,請輸入 

VIM 內執行外部命令的方法

1
2
3
:! [command] # 輸入一個外部命令可以執行該外部命令。
:!dir # 用于顯示當前目錄的內容。
:!rm FILENAME #用于刪除名為 FILENAME 的文件。

設定類

安裝

新增一個 ~/.vimrc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
" Solarized Dark 記得要先安裝
syntax enable
set t_Co=256
" let g:solarized_termtrans = 1
let g:solarized_termcolors=256
" 上色模式-針對亮背景上色,預設為亮背景(白色等)上色,但是終端機的初始背景色為深紫色,會出現文字失蹤 ( 例如註解為深藍色 ) 的情況。將這一行換成 :set bg=dark 即可。
set background=dark
colorscheme solarized

" 忽略大小寫 Ignore Case
:set ic
" 高亮度搜尋 high light search
:set hlsearch
" 在輸入搜尋樣本的期間就會開始進行搜尋
:set incsearch
" 顯示右下角的一些狀態列說明
:set ruler
" 顯示行號:對於 debug 相當有幫助! (加上 run 數字會跟著跑)
:set nu rnu
" 自動對齊縮排:如果上一行有兩個 tab 的寬度,按 enter 繼續編輯下一行時會自動保留兩個 tab 鍵的寬度。
:set ai
" 光標底線:光標所在的那一行會有底線,幫助尋找光標位置
:set cursorline
" 縮排間隔數 ( 預設為 8 個空白對齊 ),也就是說按一次 tab 鍵,游標會自動跳 4 格空白字元的寬度。雖有多個空格但實際上只有一個 tab 字元。注意:也就是說,在其他環境下,看到 tab 字元,依舊是 8 個空白寬
:set tabstop=4
" 自動縮排對齊間隔數:向右或向左一個縮排的寬度
:set shiftwidth=4
" vim底下有一個視窗,用以顯示狀態
:set laststatus=2
" 有用 lightline 要加這行
:set noshowmode

Reference

Comments