一。修改設定檔.vimrc 打造個人化vim
本文假設安裝目錄為~/
在~/vim/share/vim/vim73/ 目錄下,有vimrc_example.vim樣本檔案,在此檔案基礎上修改相應的配置,並將其複製到使用者根目錄下(複製過程中記得重新命名為.vimrc) 命令為 cp vimrc_example.vim ~/.vimrc
複製完成嵌入vi命令即可看到變化生效。
二。vim的分屏操作
分屏啟動Vim
- 使用大寫的O參數來垂直分屏。
vim -On file1 file2 ...
- 使用小寫o參數來水平分屏。
vim -on file1 file2 ...
注釋: n是數字,表示分成幾個屏。
關閉分屏
- 關閉當前視窗。
Ctrl+W c
- 關閉當前視窗,如果只剩最後一個了,則退出Vim。
Ctrl+W q
分屏
- 上下分割當前開啟的檔案。
Ctrl+W s
- 上下分割,並開啟一個新的檔案。
:sp filename
- 左右分割當前開啟的檔案。
Ctrl+W v
- 左右分割,並開啟一個新的檔案。
:vsp filename
移動游標
Vi中的游標鍵是h, j, k, l,要在各個屏間切換,只需要先按一下Ctrl+W
- 把游標移到右邊的屏。
Ctrl+W l
- 把游標移到左邊的屏中。
Ctrl+W h
- 把游標移到上邊的屏中。
Ctrl+W k
- 把游標移到下邊的屏中。
Ctrl+W j
- 把游標移到下一個的屏中。.
Ctrl+W w
移動分屏
這個功能還是使用了Vim的游標鍵,只不過都是大寫。當然了,如果你的分屏很亂很複雜的話,這個功能可能會出現一些非常奇怪的癥狀。
- 向右移動。
Ctrl+W L
- 向左移動
Ctrl+W H
- 向上移動
Ctrl+W K
- 向下移動
Ctrl+W J
螢幕尺寸
下面是改變尺寸的一些操作,主要是高度,對於寬度你可以使用Ctrl+W <或是>,但這可能需要最新的版本才支援。
- 讓所有的屏都有一樣的高度。
Ctrl+W =
- 增加高度。
Ctrl+W +
- 減少高度。
Ctrl+W -
三。vim基本編輯命令
1. 三種狀態
Command: 任何輸入都會作為編輯命令,而不會出現在螢幕上,任何輸入都引起立即反映
Insert: 任何輸入的資料都置於編輯寄存器,按ESC,可跳回command方式
Escape: 以“:”或者“/”為前置的指令,出現在螢幕的最下一行,任何輸入都被當成特別指令。
2.離開vi
:q! 離開vi,並放棄剛在緩衝區內編輯的內容。
:wq 將緩衝區內的資料寫入磁碟中,並離開vi。
同wq。
(注意—— :X 是檔案加密,一定要與:x存檔退出相區別)
3. 進入輸入模式
a (append) 由遊標之後加入資料。
A 由該行之末加入資料。
i (insert) 由遊標之前加入資料。
I 由該行之首加入資料。
o (open) 新增一行於該行之下供輸入資料之用。
O 新增一行於該行之上供輸入資料之用。
4.刪除與修改
x 刪除遊標所在該字元。
X 刪除遊標所在之前一字元。
r 用接於此指令之後的字元取代(replace)遊標所在字元。如:ra將遊標所在字元以 a 取代之。
R 進入取代狀態,直到《ESC》為止。
s 刪除遊標所在之字元,並進入輸入模式直到《ESC》。
S 刪除遊標所在之該行資料,並進入輸入模式直到《ESC》。
5.游標的移動
m<a-z> 設定書籤<a-z>
‘<a-z> 移至書籤<a-z>處
0 移至該行之首
$ 移至該行之末。
e 移動到下個字的最後一個字母
w 移動到下個字的第一個字母。
b 移動到上個字的第一個字母。
^ 移至該行的第一個字元處。
H 移至視窗的第一行。
M 移至視窗的中間那行。
L 移至視窗的最後一行。
G 移至該檔案的最後一行。
+ 移至下一列的第一個字元處。
- 移至上一列的第一個字元處。
:n 移至該檔案的第 n 列。
n+ 移至遊標所在位置之後的第 n 列。
n- 移至遊標所在位置之前的第 n 列。
<Ctrl><g> 顯示該行之行號、檔案名稱、檔案中最末行之行號、遊標所在行號佔總行號之百分比。
(Vim) 游標移動基本用法小解:
(這隻要組合上邊的功能就可以明白了,不用再一一講解了吧!)
ge b w e
← ← ---→ --→
This is-a line, with special/separated/words (and some more).
←- ←-- -----------------→ ---→
GE B W E
6.視窗的移動
<Ctrl><f> 視窗往下卷一頁。
<Ctrl><b> 視窗往上卷一頁。
<Ctrl><d> 視窗往下卷半頁。
<Ctrl><u> 視窗往上卷半頁。
<Ctrl><e> 視窗往下卷一行。
<Ctrl><y> 視窗往上卷一行。
7. 剪下、複製、刪除
Operator + Scope = command
7.1.Operator
d 剪下
y 複製。
p 粘帖,與 d 和 y 配和使用。可將最後d或y的資料放置於遊標所在位置之行列下。
c 修改,類似delete與insert的組和。刪除一個字組、句子等之資料,並插入建立資料。
7.2Scope
e 由遊標所在位置至該字串的最後一個字元。
w 由遊標所在位置至下一個字串的第一個字元。
b 由遊標所在位置至前一個字串的第一個字元。
$ 由遊標所在位置至該行的最後一個字元。
0 由遊標所在位置至該行的第一個字元。
7.3整行動作
dd 刪除整行。
D 以行為單位,刪除遊標後之所有字元。
cc 修改整行的內容。
yy 使遊標所在該行複製到記憶體緩衝區。
7.4取消前一動作(Undo)
u 恢複最後一個指令之前的結果。
U 恢複遊標該行之所有改變。
(vim) u 可以多次撤消指令,一次撤消一個操作,直至本次操作開始為止。
(vim) Ctrl+r 可以恢複撤消前內容,按多次可恢複多次。
8.尋找與替換
/字串 往遊標之後尋找該字串。
?字串 往遊標之前尋找該字串。
n 往下繼續尋找下一個相同的字串。
N 往上繼續尋找下一個相同的字串。
% 尋找“(”,“)”,“{”,“}”的配對符。
s 搜尋某行列範圍。
g 搜尋整個編輯緩衝區的資料。
:1,$s/old/new/g 將檔案中所有的『old』改成『new』。
:10,20s/^/ / 將第10行至第20行資料的最前面插入5個空白。
(vim)
/字串 後邊輸入查詢內容可儲存至緩衝區中,可用↑↓進行以往內容選擇。
另外:將游標移動在選定單詞下方按*,則可以選中此單詞作為查詢字元,可以避免輸入一長串字元的麻煩。
9.(vim) 大小寫替換
首先用按v開啟選擇功能,然後用↑↓←→鍵來選定所要替換的字元,若是小寫變大寫,則按U;反之按u;
如果是選擇單詞,則可以在按v後,按w,最後按U/u,這樣就可以將字元隨意的改變大小寫了,而不用刪除後重新敲入。
10.資料的串連
J 句子的串連。將遊標所在之下一行串連至遊標該行的後面。
11.環境的設定
:set all 可設定的環境變數列表
:set 環境變數的當前值
:set nu 設定資料的行號。
:set nonu 取消行號設定。
:set ai 自動內縮。
:set noai 取消自動內縮。
(vim)
:set ruler 會在螢幕右下角顯示當前游標所處位置,並隨光移動而改變,佔用螢幕空間較小,使用也比較方便,推薦使用。
:set hlsearch 在使用尋找功能時,會高亮顯示所有匹配的內容。
:set nohlsearch 關閉此功能。
:set incsearch 使Vim在輸入字串的過程中,游標就可定位顯示匹配點。
:set nowrapscan 關閉尋找自動迴環功能,即尋找到檔案結尾處,結束尋找;預設狀態是自動迴環
13.ex指令
13.1讀寫資料
:10,20w test 將第10行至第20行的資料寫入test檔案。
:10,20w>>test 將第10行至第20行的資料加在test檔案之後。
:r test 將test檔案的資料讀入編輯緩衝區的最後。
:e [filename] 編輯新的檔案。
:e! [filename] 放棄當前修改的檔案,編輯新的檔案。
:sh 進入shell環境,使用exit退出,回到編輯器中。
:!cmd 運行命令cmd後,返回到編輯器中。
13.2刪除、複製及搬移
:10,20d 刪除第10行至第20行的資料。
:10d 刪除第10行的資料。
:%d 刪除整個編輯緩衝區。
:10,20co30 將第10行至第20行的資料複製至第30行之後。
:10,20mo30 將第10行至第20行的資料搬移至第30行之後。