一、vim/vi快捷鍵、
大小寫切換:
shift+字母 強(qiáng)烈推薦
caps lock+字母
vi命令: 功能強(qiáng)大文本編輯器(Unix/Linux) vim等都是對vi的加強(qiáng)版
1)關(guān)注三種模式:如何切換
回車 i(光標(biāo)當(dāng)前位) a(光桿右邊1位) o(光標(biāo)下一行) O(光標(biāo)上一行)
底行模式(冒號模式) ----> 命令模式 --I--> 輸入模式
底行模式(冒號模式) <--:-- 命令模式 <--Esc-- 輸入模式
: / ? Esc
2)常用的操作命令:
操作模式
命令模式: ctr+c 或者esc
冒號模式(底行模式): ctr+c+: 或者esc+:
編輯模式:
(通常使用i,以下命令執(zhí)行后,會(huì)自動(dòng)進(jìn)入編輯模式)
i,在當(dāng)前位置前插入;
I,在當(dāng)前行首插入;
a,在當(dāng)前位置后插入;
A,在當(dāng)前行尾插入;
o,在當(dāng)前行之后插入一行;
O,在當(dāng)前行之前插入一行;
s 刪除當(dāng)前字符,光標(biāo)定位當(dāng)前位置
S 刪除當(dāng)前行,光標(biāo)定位當(dāng)前行首
c 無效果
C 刪除光標(biāo)至行尾
r,用新輸入的一個(gè)字符替換當(dāng)前一個(gè)字符;
R,從當(dāng)前字符開始往后一個(gè)一個(gè)字符替換為新輸入的字符;
在輸入命令時(shí)的操作
ctr+a 光標(biāo)移動(dòng)到 行首
ctr+e 光標(biāo)移動(dòng)到 行尾
ctr+a+k 刪除全部輸入
光標(biāo)移動(dòng)
O
i 光標(biāo) a
o 變?yōu)檩斎肽J?,光?biāo)停留位置不同
向上 k
向下 j
向左 h
向右 l 用小鍵盤方向鍵也可
以上四個(gè)命令可以配合數(shù)字使用,比如 20j 就是向下移動(dòng)20行,5h 就是向左移動(dòng) 5 個(gè)字符;
在VI中,很多命令都可以配合數(shù)字使用,比如刪除10個(gè)字符10x,在當(dāng)前位置后插入3個(gè)!,3a!,這里的esc是必須的,否則命令不生效;
0,跳轉(zhuǎn)到行首(跳轉(zhuǎn)到一行開始的第一個(gè)字符,[包括前面的空格]);
^,跳轉(zhuǎn)到一行的第1個(gè)字符,[不包括前面的空格];
$,跳轉(zhuǎn)到行尾
1$,跳轉(zhuǎn)到當(dāng)前行的行尾
3$,跳轉(zhuǎn)到下面2行的行尾
屏首 H(首列) 跳轉(zhuǎn)到當(dāng)前可見區(qū)域的頂部第一個(gè)非空字符;
屏中央 M (首列) 跳轉(zhuǎn)到當(dāng)前可見區(qū)域的中間第一個(gè)非空字符;
屏尾 G(首列)/L 跳轉(zhuǎn)到當(dāng)前可見區(qū)域的最后第一個(gè)非空字符;
"H" 表示 "Home" (頭),
"M" 表示 "Middle" (中) 而
"L" 表示 "Last" (尾)。
滾屏
ctrl + f 向前看,正向滾動(dòng)1屏(forward)(減去兩行,方便閱讀)
ctrl + d 向下看,反向滾動(dòng)0.5屏(down)
ctrl + b 向后看,反向滾動(dòng)1屏(backward)
ctrl + u 向上看,正向滾動(dòng)0.5屏(up)
ctrl+e 向上滾動(dòng)1行
ctrl+y 向下滾動(dòng)1行
zt 置頂當(dāng)前行,當(dāng)前行顯示在屏幕最上方
zz 置中當(dāng)前行,當(dāng)前行顯示在屏幕中間
zb 置底當(dāng)前行,當(dāng)前行顯示在屏幕最下方
50% 移動(dòng)到文件的中間,
90% 移到差不多結(jié)尾的位置。
set scrolloff=999 上下滾動(dòng)時(shí),光標(biāo)上下兩側(cè)最少保留的屏幕行數(shù),這使你工作時(shí)總有一些可見的上下文。
set sidescrolloff=999 上左右滾動(dòng)時(shí),光標(biāo)上下兩側(cè)最少保留的屏幕行數(shù),這使你工作時(shí)總有一些可見的上下文。
如果你設(shè)置此選項(xiàng)為很大的值 (比如 999),光標(biāo)所在的行將總定位在窗口的中 間位置
(除非你非??拷募_始或者結(jié)束的地方,或者有長行回繞)。
在含有--More--的頁面中滾動(dòng)方式
f 向上滾動(dòng)1屏forward
u 向上滾動(dòng)半屏up
k 向上滾動(dòng)1行
b 向下滾動(dòng)1屏back
d 向下滾動(dòng)半屏down
j 向下滾動(dòng)1行
定位
gg 首行(首列,非空字符)
5gg 快速跳轉(zhuǎn)到第5行的開頭(首列,非空字符)
G 尾行 (首列,非空字符)
5G 快速跳轉(zhuǎn)到第5行的開頭(首列,非空字符)
:5 快速跳轉(zhuǎn)到第5行的開頭(首列,非空字符)
ctr+g 顯示當(dāng)前編輯的文件名+光標(biāo)位置
:set nu 或者:set number 顯示行號
:set nonu 或者:set nonumber 取消顯示行號
:set ru 或者:set ruler 顯示光標(biāo)位置,行列
:set noru 或者:set noruler 取消光標(biāo)位置,行列
使用2gg或者2G時(shí),vim會(huì)記住你從什么地方跳過去的。這個(gè)位置成為一 個(gè)標(biāo)記,
ctrl+o 回到上1個(gè)標(biāo)記處,
:jumps 輸出一個(gè)你可以跳往的位置的列表。最后一個(gè)你使用的標(biāo)記會(huì)用 ">" 符號標(biāo)記出來。
有名字的標(biāo)記:
m[a-z] 在光標(biāo)處鍵入,給標(biāo)記命名a到z任意字母
'[a-z] ‘單引號這個(gè)鍵+名字 移到標(biāo)記所在行的行首
`[a-z] `反引號這個(gè)鍵(esc下面的鍵)+名字 移到標(biāo)記所在行的行,并同時(shí)移到標(biāo)記所在列上
:marks
mamrk標(biāo)記列表中,你會(huì)注意 到有一些特殊的標(biāo)記,包括:
’ 跳轉(zhuǎn)前的光標(biāo)位置
" 最后編輯的光標(biāo)位置
[ 最后修改的開始位置
] 最后修改的結(jié)束位置
’‘或者``都可以回到最新的1個(gè)標(biāo)記處
如 在某光標(biāo)處打個(gè)開始標(biāo)記(感覺類似于便簽書簽一樣) ms 在另1外打個(gè)結(jié)束標(biāo)記 me
想回到ms或者me處的方法,
`s或者`e
’s或才'e只回到行首
''或者``只會(huì)在上次標(biāo)記和當(dāng)前位置來回切換
w 移動(dòng)到下1個(gè)單詞的詞頭(光標(biāo)在詞首), 向后移動(dòng)一個(gè)單詞(光標(biāo)停在單詞首部),如果已在行尾,則轉(zhuǎn)至下一行行首;
W 同w,但會(huì)忽略非單詞部分(可以更快速的移動(dòng))
b 前1個(gè)單詞, 向前移動(dòng)一個(gè)單詞(光標(biāo)停在單詞首部),
5b 向前移動(dòng)5個(gè)單詞;
B 同b,但會(huì)忽略非單詞部分(可以更快速的移動(dòng))
e 移動(dòng)到下1個(gè)單詞的詞尾(光標(biāo)在詞尾), 只是光標(biāo)停在單詞尾部
E 同e,但會(huì)忽略非單詞部分(可以更快速的移動(dòng))
ge 上1個(gè)單詞(光標(biāo)在詞尾), 光標(biāo)停在單詞尾部
gE 同ge,但會(huì)忽略非單詞部分(可以更快速的移動(dòng))
head和 tail
head -n 文件名 前n行
tail -n 文件名 后n行
tail -f f5 能夠監(jiān)控日志文件 動(dòng)態(tài)實(shí)時(shí)刷新
ggVG或者ggvG 全選高亮顯示
V 進(jìn)入Visual(可視)模式
縮進(jìn)
>>,當(dāng)前行增加縮進(jìn)一個(gè)TAB;
n>>,當(dāng)前行開始的n行增加縮進(jìn)一個(gè)TAB
<<,當(dāng)前行減少一個(gè)TAB;
n<<,當(dāng)前行開始的n行減少一個(gè)TAB
選中
v 可視模式, 光標(biāo)所選中處取被選中內(nèi)容
This is an examination sample of visual mode
velllld
This is an example of visual mode
V 可視,列表選擇,按行選擇
你會(huì)發(fā)現(xiàn)在你作任何移動(dòng) 之前,整行都被高亮顯示了。左右移動(dòng)不會(huì)有任何效果。
而通過上下移動(dòng),你可以一次選 擇多行。
Vjj 可以選中三行:
ctr+v 可視,列表選擇 光標(biāo)所選中處取被選中內(nèi)容
在處理表格時(shí)非 常有用。
name Q1 Q2 Q3
pierre 123 455 234
john 0 90 39
steve 392 63 334
要?jiǎng)h除中間 "Q2" 這一欄,
把光標(biāo)移動(dòng)到 "Q2" 的 "Q" 上面。按 CTRL-V 啟動(dòng)列塊可視 模式。
現(xiàn)在用 "3j" 向下移動(dòng)三行,
然后用 "w" 移到下一個(gè)單詞。你可以看到最后一欄 的第一個(gè)字符也被包括進(jìn)來了。
要去掉它,用 "h" 命令即可。
現(xiàn)在按 "d",中間一欄就 被刪除了。
o 移動(dòng)到另一端(other end)
注意:
"o" 和 "O" 在可視模式下與在普通模式下的作用有很大的不同;
在普通模式下, 它們的作用是在光標(biāo)后或前加入新的一行。
普通可視模式下[2個(gè)選擇點(diǎn),在對角]:
如果你在可視模式下選中了一些文字,然后你又發(fā)現(xiàn)你需要改變被選擇的文字的另一端,
o,光標(biāo)會(huì)移動(dòng)到被選中文字的另一端,
再按 "o" 光標(biāo)還會(huì)回到另一端。
列塊可視模式下[4個(gè)選擇點(diǎn),在4個(gè)角]::
當(dāng)使用列塊可視模式的時(shí)候,你會(huì)有四個(gè)角,
小o,切對角
大O,切到同行
選中1個(gè)單詞
aw 文本對象,1個(gè)單詞(包含單詞+后面的空格)[a word]
選中1個(gè)句子(在所有可視模式下)
as 文本對象,1個(gè)句子(包含句子+后面的空格)[a Sentence]
is 文本對象,內(nèi)含句子(只包含句子)[Inner Sentence]
拷貝
y(yanking,抽出),yanking 是 Vim 中拷貝命令的名字
y 復(fù)制選中內(nèi)容到0號寄存器
+y 復(fù)制選中內(nèi)容到+寄存器(也就是系統(tǒng)的剪貼板),供其它程序使用
gg-----yG 全部復(fù)制
gg"+yG 復(fù)制到別的地方
yw 拷貝詞
y2w 拷貝兩個(gè)單詞
注意 :
yw 包括單詞后面的空白字符。
ye 不 包括單詞后面的空白字符。
yy 拷貝一整行 (同Y)
5yy 拷貝5行
yyp 拷貝光標(biāo)所在行,然后在光標(biāo)所在行的(下一行)粘貼
注意:
"yy" 命令拷貝一整行,就像 "dd" 刪除一整行一樣。
出乎意料地是,"D" 刪除到行尾而
"Y" 卻是拷貝一整行。要 注意 這個(gè)區(qū)別!
"y$" 拷貝到行尾。
:1,2co3 拷貝行1,行2到行3之后
yy,拷貝當(dāng)前行;nyy,拷貝當(dāng)前后開始的n行;等同于Y;
y^,復(fù)制到行首,不包括當(dāng)前位置;
y$,復(fù)制到行尾,包括當(dāng)前位置;
yG,本行復(fù)制到文檔尾;
ygg,本行復(fù)制到文檔頭;
剪切
:4,5m6 移動(dòng)行4,行5到行6之后 剪切
剪切板
"*yy 拷貝一行到剪貼板中:
"*p 粘貼回來
粘貼
p(put) 粘貼(在光標(biāo)后粘貼,右側(cè))(p 在 Vim 中表示 put,放置)
可將已刪除的文本內(nèi)容置于光標(biāo)之后,
如果最后一次刪除的是1個(gè)整行,那將置于光標(biāo)所在行的下1行
P(shift+p) 粘貼(在光標(biāo)前,左側(cè)粘貼,或光標(biāo)上一行粘貼)
xp 交換兩個(gè)字符
teh
光標(biāo)移到e上,執(zhí)行xp命令--》the
這個(gè)工作過程是: "x" 刪除一個(gè)字 符,保存到寄存器。
"p" 把這個(gè)被保存的字符插入到光標(biāo)的后面,也就是在 "h" 的后面 了。
拷貝、剪切、刪除、都會(huì)存放到寄存器中,都可通過p來粘貼
dd刪除后,可以用p進(jìn)行粘貼;
ddp即實(shí)現(xiàn)了當(dāng)前行與下一行的交換;
dl刪除后,也可以用p進(jìn)行粘貼;(dl等同于x)
dlp即實(shí)現(xiàn)了當(dāng)前字符與其后的一個(gè)字符的交換;
d相關(guān)的命令刪除后都可以用p進(jìn)行粘貼;
插入
i,在光標(biāo)之前插入,光標(biāo)左邊插入;
I,在當(dāng)前行首插入;
a,在光標(biāo)之后插入,光標(biāo)右邊插入;;
A,在當(dāng)前行尾插入;
3a!<Esc> 光標(biāo)右邊插入3個(gè)!,最后一定要按esc才有效
o, 在當(dāng)前行下方插入一行;
shift+o 在當(dāng)前行上方插入一行;
O, 在當(dāng)前行上方插入一行;
:r file2 在光標(biāo)所在位置插入另一個(gè)文件 (合并)
刪除
x 刪除當(dāng)前字符比較好用
dd,刪除當(dāng)前行;(會(huì)刪除行首的空字符,當(dāng)前行不保留)
5dd,刪除當(dāng)前行開始向下的5行;
J 刪除當(dāng)前行的換行符,將下一行連接到當(dāng)前行行尾,中間用1個(gè)空隔隔開
dj,刪除當(dāng)前行和下一行;
dk,刪除當(dāng)前行和上一行;
d^,刪除至行首(不包括當(dāng)前字符),從當(dāng)前的位置一直刪除到本行行首;等同于d0;
d0(不包括當(dāng)前字符),也是
c0,刪除至行首,回到一行的第一個(gè)字符,包括最前面的空白字符;
c^,刪除至行首,不會(huì)刪除行首的空白字符;
d$,刪除至行尾(包括當(dāng)前字符),從當(dāng)前的位置一直刪除到本行行尾;等同于D,還有C;
c$ 刪除至行尾;等同于D,還有C;
dw,從當(dāng)前光標(biāo)處,直到下1個(gè)單詞起始處,不包括下1個(gè)單詞的第1個(gè)字符
d2w 刪除從光標(biāo)處,刪除到后面第2個(gè)單詞詞頭前
文本對象
aw是 文本對象,1個(gè)單詞
as是 文本對象,1個(gè)句子(包含句子+后面的空格)
is是 文本對象,內(nèi)含句子(只包含句子)
daw "daw" 就是 "Delete A Word" (刪除一個(gè)單詞),[aw是 文本對象]
如果你在一個(gè)單詞的中間而又想刪掉這個(gè)單詞,可用daw快速刪除,該單詞后的 空格字符也被刪除掉了。
cis (change Inner Sentence 修改內(nèi)含句子)
das (delete a Sentence 修改內(nèi)含句子)
de 從當(dāng)前光標(biāo)處,直到下1個(gè)單詞末尾處,包括下1個(gè)單詞的最后第1個(gè)字符
d2e 刪除從光標(biāo)處,刪除到后面第2個(gè)單詞詞尾處
df<字符> 從光標(biāo)處開始刪除到<字符處>
. 重復(fù)任何除 "u" (撤銷),CTRL-R (重做) 和冒號命令外的修改。
這里會(huì)重復(fù)執(zhí)行上1次的 df<字符> 命令
3dw 刪除 3 個(gè)單詞
刪 除1個(gè)單詞 3 次
d3w 刪除 3 個(gè)單詞
刪除3個(gè)單詞1次
3d2w 刪除 6 個(gè)單詞
刪除2個(gè)單詞3次
db,刪除光標(biāo)所在處一個(gè)單詞的前部分/上1個(gè)單詞;
dG,刪除光標(biāo)所在行 至文檔結(jié)束;
gg然后dG, 刪除全部
dgg,刪除光標(biāo)所在行 至文檔開頭;
:n1,n2d,刪除n1 至 n2行;
:n1,$d,刪除n1 至文檔結(jié)束;
:1,$d,刪除所有行;
shift + j,合并當(dāng)前行與下一行;等同于J;
dl,向后刪除光標(biāo)所在的一個(gè)字符;等同于x;
5dl,刪除當(dāng)前向后的5個(gè)字符;
5x,刪除當(dāng)前向后的5個(gè)字符;
dh,向前刪除光標(biāo)所在的一個(gè)字符;等同于X;
常用到的刪除文本命令
x 刪除光標(biāo)下的字符 ("dl" 的縮寫)
X 刪除光標(biāo)前的字符 ("dh" 的縮寫)
D 從當(dāng)前位置刪除到行尾 ("d$" 的縮寫)
dw 從當(dāng)前位置刪除到下一個(gè)單詞開頭(=daw會(huì)刪除空白字符)
db 從當(dāng)前位置刪除到前一個(gè)單詞的開頭
diw 刪除光標(biāo)上的單詞 (不包括空白字符,iw=inner word)
daw 刪除光標(biāo)上的單詞 (包括空白字符,aw=a word)
dG 刪除到文件末
dgg 刪除到文件首
以上用 "c" 代替 "d",這會(huì)變成修改命令;
而改用 "y",則變成拷貝命令,等等等 等。
替換、修改
c(change)
cw 從光標(biāo)處開始,替換一個(gè)單詞,
ce 同cw
c^ 從光標(biāo)處開始,替換直行首
c0
c$ 從光標(biāo)處開始,替換直行尾
C 替換從光標(biāo)到行尾
c 修改,change。它的作用方式與 "d" 操作符相似,只是 完成后會(huì)切換到插入模式。
ce 刪除,修改一個(gè)詞,更精確的說,它刪除一個(gè)詞,并切換到插入模式。
cw 同ce
c2wbe<Esc>
c 修改操作符
2w 移動(dòng)兩個(gè)單詞的距離 (與操作符合起來,它刪除兩個(gè)單詞并進(jìn)入插入模式)
be 插入 be 這個(gè)單詞
<Esc> 切換回普通模式
c$ 修改至行尾,
這相當(dāng)于先用 "d$" 刪除一行再用 "a" 啟動(dòng)插 入模式,以便加入新的文字。
cl 修改光標(biāo)處1個(gè)字符
cc,修改當(dāng)前一整行,并進(jìn)入編輯模式;等價(jià)于S(大寫);
但它會(huì)保留這一行的縮進(jìn) (前導(dǎo)空格)。
5cc,刪除,修改當(dāng)前行開始向下的5行;
r(replace)
r,替換單個(gè)字符, 用新輸入的一個(gè)字符替換當(dāng)前一個(gè)字符;[一直在命令模式下]
cl
s
5rx 將光標(biāo)處[含光標(biāo)處]向右總共5個(gè)字符,替換成x
5r<Enter> 將光標(biāo)處[含光標(biāo)處]向右總共5個(gè)字符,替換成1個(gè)回車換行符
R,連續(xù)替換多個(gè)字符,在當(dāng)前光標(biāo)處連續(xù)替換,[一直在替換的編輯模式下]
This is text.
Rinteresting.<Esc>
This is interesting.
你可能會(huì) 注意 到,這是用十二個(gè)字符替換一行中的五個(gè)字符。
如果超出行的范圍,"R" 命 令自動(dòng)進(jìn)行行擴(kuò)展,而不是替換到下一行。
在替換過程中,當(dāng)你使用 <BS> (退格鍵) 進(jìn)行修正時(shí),你會(huì)發(fā)現(xiàn)原來被替換的字符又回來了。這就好像一個(gè) "撤消" 命令一樣。
s()
s 修改光標(biāo)處1個(gè)字符
:10,20 s/^/——/g,從第10行至第20行每行行首插入四個(gè)中橫杠( - );
:10,20 s/$/——/g,從第10行至第20行每行行尾插入四個(gè)中橫杠( - );
:s/old/new/,在當(dāng)前行中用 old 替換 new,替換第一個(gè)匹配到的;沒提示
:s/old/new/c,在當(dāng)前行中用 old 替換 new,替換第一個(gè)匹配到的;有提示
:s/old/new/g,在當(dāng)前行中用 old 替換 new,替換當(dāng)前行的所有匹配;沒提示
:s/old/new/gc,在當(dāng)前行中用 old 替換 new,替換當(dāng)前行的所有匹配;有提示
:%s/old/new/g,全文將 old 替換為 new,不提示;
:%s/old/new/c,全文將 old 替換為 new,提示是否替換;
:s/old/new 只改變光標(biāo)所在行的 第1個(gè)匹配串
:s/old/new/g 匹配光標(biāo)所在行 所有的匹配串
:n1,n2s/old/new/g 匹配從n1行到n2行中[包括n1和n2行本身] 所有的匹配串
:%s/old/new/g 匹配全文中 所有的匹配串
:%s/old/new/gc 匹配全文中 所有的匹配串 ,并逐一詢問是否替換
~ 大小寫切換(命令模式下,光標(biāo)所在處的字母自動(dòng)切換大小寫)
按住shift 大寫字母,
松開shift 小寫字母
修改光標(biāo)下字符的大小寫,并移動(dòng)到下一個(gè)字符。這不是一個(gè)操作符 (除非設(shè)置了 ’tildeop’),所以你不能連接一個(gè)動(dòng)作命令。
這個(gè)命令在 可視模式下也有效,它會(huì)改變被選中的所有文本的大小寫。
I 移到當(dāng)前行的第一個(gè)非空字符并啟動(dòng)插入模式。[i/I在光標(biāo)左側(cè)插入]
A 移動(dòng)到行尾并啟動(dòng)插入模式?! a/A在光標(biāo)右側(cè)插入]
x 表示 dl (刪除當(dāng)前光標(biāo)下的字符)
X 表示 dh (刪除光標(biāo)左邊的字符)
D 從當(dāng)前位置刪除到行尾 ("d$" 的縮寫)
C 表示 c$ (修改到行尾)
s 表示 cl (修改一個(gè)字符),修改當(dāng)前字符,光標(biāo)定位當(dāng)前位置
S 表示 cc (修改一整行) 修改當(dāng)前行,光標(biāo)定位當(dāng)前行首
查找
/text 查找text,從當(dāng)前行往下查找(/從光標(biāo)處,往下找)
?text 查找text,從當(dāng)前行往上查找(/從光標(biāo)處,往上找)
n 繼續(xù)向正(如果前面是/,正向就是,向下)查找下一個(gè)
N 反方向(如果前面是/,反向就是,向上)繼續(xù)查找下一個(gè)
3n 移動(dòng)到第三個(gè)匹配點(diǎn)
注意 , "/" 不支持計(jì)數(shù)前綴。
注意:如果查找已經(jīng)到達(dá)文件末尾,查找會(huì)自動(dòng)從文件頭部繼續(xù)查找,除非‘wrapscan’被復(fù)位
字符 .*[]^%/\?~$ 有特殊含義。如果你要查找它們,需要在前面加上一個(gè) "\"。
查找很長的詞,鍵入太麻煩,這時(shí)候可以將光標(biāo)移動(dòng)到該詞上,(其它也可以包括中文符號等)
* 相當(dāng)于 / 搜索;向下查找[正向查找,匹配整個(gè)單詞]
3* 查找光標(biāo)下單詞第三次出現(xiàn)的地方。
g* [正向查找,部分匹配]
# 鍵即可以該單詞進(jìn)行搜索, 相當(dāng)于 ? 搜索,向上查找[反向查找,匹配整個(gè)單詞]
#* [反向查找,部分匹配]
/the$ 在行尾匹配[完整單詞]the, 查找以 "The" 結(jié)尾的一行
/^the 在行首匹配[完整單詞]the, 查找以 "The" 開頭的一行
/^the$ 匹配僅包含 [完整單詞]the的行
/ter. 匹配ter+任意字符
/ter\. 匹配ter+.
/the\> 匹配以the結(jié)尾的單詞
/\<the 匹配以the開頭的單詞
/\<the\> 匹配以完整的單詞the
:set xxx 可以設(shè)置xxx選項(xiàng),常用的選項(xiàng)如下
'ic' 'ignorecase' 查找時(shí)忽略字母大小寫
'noic' 'noignorecase' 查找時(shí) 不忽略字母大小寫
如果想要僅在一次查找時(shí)忽略字母大小寫,可以使用 \c:/ignore\c <回國> 沒弄明白怎么實(shí)現(xiàn)?
'is' 'incsearch' 輸入搜索命令時(shí),顯示目前輸入的模式的匹配位置。匹配的字符串被高亮。
如果 該模式不合法或者沒有匹配,不顯示任何東西。屏幕會(huì)經(jīng)常刷新,
所以只有 對快速終端,這才有意義。
'nois' 'noincsearch' 查找短語時(shí) 不顯示部分匹配
'hls' 'hlsearch' 高亮顯示所有的匹配短語
'nohls' 'nohlsearch' 高亮 不顯示所有的匹配短語
:nohls 關(guān)閉當(dāng)前的高亮顯示,如果再次搜索或按下 n 或 N 鍵,則會(huì)再次高亮;[臨時(shí)關(guān)掉高亮顯示]
比較常用,vim會(huì)記錄上一次查找,在當(dāng)前vim中在次打開其它文件,還沒查找就高亮顯示上一次的記錄,用這命令可以很方便
:nohlsearch 關(guān)閉當(dāng)前的高亮顯示,如果再次搜索或按下 n 或 N 鍵,則會(huì)再次高亮;
:set wrap 長行自動(dòng)回繞,Vim 通常會(huì)對長行自動(dòng)回繞,以便你可以看見所有的文字。但有時(shí)最好還是能讓文字在一行中顯示完。
這樣,你需要左右移動(dòng)才能看到一整行。
:set nowrap 關(guān)閉長行自動(dòng)回繞
:set wrapscan 重新搜索,在搜索到文件頭或尾時(shí),返回繼續(xù)搜索,默認(rèn)開啟;
配對括號的查找
% 可以查找配對的 )、]、}
將光標(biāo)放在任何1個(gè)以上括號上,在按下%,就會(huì)自動(dòng)配對到對應(yīng)的另1半配對的括號上
不將光標(biāo)放到括號上,也能自動(dòng)正向(向右)匹配到第1個(gè)括號,
行內(nèi)查找字符(在當(dāng)前行移動(dòng))
fx 光標(biāo)右側(cè)查找x字符(光標(biāo)定位到x上)
Fx 光標(biāo)左側(cè)查找x字符(光標(biāo)定位到x上)
tx 光標(biāo)右側(cè)查找x字符(光標(biāo)定位到x左側(cè))
Tx 光標(biāo)左側(cè)查找x字符(光標(biāo)定位到x左側(cè))
; 正向重復(fù)
, 反向重復(fù)
個(gè)人常用f<字符> ;/,來提高本行中定位單個(gè)字符速度,不喜歡用大寫,都要切換大小寫
重做
u 撤銷 undo
U 行撤消,行撤銷命令撤銷所有在最近編輯的行上的操作。 輸入該命令兩次取消前一個(gè) "U":
ctr+R 重做,
如果你撤銷得太多,你可以輸入 CTRL-R (redo) 回退前一個(gè)命令。換句話說,它撤銷一個(gè)撤銷。
重復(fù)修改
. 重復(fù)任何除 "u" (撤銷),CTRL-R (重做) 和冒號命令外的修改。
行內(nèi)重復(fù)修改
To <B>generate</B> a table of <B>contents
f< 找第一個(gè) <
df> 刪除到 >
f< 找下一個(gè) <
. 重復(fù)df>
f< 找下一個(gè) <
. 重復(fù)df>
如此類推
全文重復(fù)修改
你想把 "four" 修改成 "five"。有好幾個(gè)地方都要作這種修改
/four<Enter> 找到第一個(gè) "four"
cwfive<Esc> 修改成 "five"
n 找下一個(gè) "four"
. 重復(fù) cwfive<Esc>
n 找下一個(gè) "four"
. 重復(fù) cwfive<Esc>
如此類推.....
注釋:
vim編輯器---批量注釋與反注釋
方法一 塊選擇模式
插入注釋:
用v進(jìn)入virtual模式
用上下鍵選中需要注釋的行數(shù)
按Control+v(win下面ctrl+q)進(jìn)入列模式
按大些“I”進(jìn)入插入模式,輸入注釋符“#”或者是"http://",然后立刻按下ESC(兩下)
取消注釋:
Ctrl + v 進(jìn)入塊選擇模式,選中你要?jiǎng)h除的行首的注釋符號,注意// 要選中兩個(gè),選好之后按d即可刪除注釋
方法二 替換命令
批量注釋:
使用下面命令在指定的行首添加注釋:
:起始行號,結(jié)束行號s/^/注釋符/g
取消注釋:
:起始行號,結(jié)束行號s/^注釋符//g
實(shí)例演示:
在27 - 30行添加 // 注釋
:27,30s#^#//#g
在27 - 30行刪除 // 注釋
:27,30s#^//##g
在10 - 20行添加 # 注釋
:10,20s/^/#/g
在10 - 20行刪除 # 注釋
:10,20s/^/#/g
注意例子中正則的分割符使用的是相反的符號,如果匹配// 那么使用 #作分隔符這樣不需要對/作轉(zhuǎn)義處理,節(jié)省輸入次數(shù)。
保存
從正在編輯的vim中,將文本內(nèi)容定入到文件,文件一定不能存在(否則寫入不了)
保存文件的更多信息
在打開的vim文件中執(zhí)行以下:
:!ls
使用1個(gè)當(dāng)前目前不存在的文件名,如test(test在此之前不存在)
:w test 將當(dāng)前正在編輯的文件保存到test文件中
:!ls 發(fā)現(xiàn)當(dāng)前目錄多了個(gè)tset文件,就是保存的文件
選擇性保存
:n1,n2 w test10 從n1行到n2行中內(nèi)容 定稿到test10文件中(test10在此之前不存在)
或者
移動(dòng)光標(biāo)到所在行
v或者ctr+v-->進(jìn)入可視模式
移動(dòng)光標(biāo)到指定行,
按下:字符,確認(rèn)看到屏幕底部看到 :'<,'>
在接著輸入w test10 <回車>
:w 存盤 write (類似Windows中 ctrl + s)
:w 新文件名 另存為新文件(新文件名,之前不能存在)
:wq 退出保存 或:x
:q! 退出不保存,放棄修改
:e! 重新裝載原來放棄修改的文件,
放棄修改后,還想重新編輯(在未保存前操作,不常用)
ZZ 退出保存,不會(huì)自動(dòng)建立1個(gè)備份文件,修改立即生效,并且不能恢復(fù),可以配置vim讓它產(chǎn)生1個(gè)備份文件
用shift+z+z方便
提取和合并文件
:r newfilename 將在光標(biāo)處,插入,
通過:n1,n2 w newfilename
或者:'<,'> w newfilename創(chuàng)建的newfilename
如 :r test10
:r !ls 也可提取外部命令的輸出
vim內(nèi)執(zhí)行外部命令
:!+外部命令+回車
:!ls 回車 在vim中執(zhí)行外部的shell命令,列出當(dāng)前目錄的內(nèi)容
獲取幫助信息
:help <回車>
:help w 查詢和w相關(guān)的幫助
:help c_CTRL-D
:help insert-index
:help user-manual
當(dāng)你閱讀幫助的時(shí)候,你會(huì)發(fā)現(xiàn)有一些文字被一對豎線括起來了 (例如 |help|或者[xxx])。這表示 一個(gè)超級鏈接。
CTRL-] 如果你把光標(biāo)移到這兩個(gè)豎線之間并按 CTRL-] (標(biāo)簽跳轉(zhuǎn)命令),幫助系 統(tǒng)會(huì)把你引向這個(gè)超級鏈接指向的主題。
CTRL-T (標(biāo)簽退棧) 把你送回前一個(gè)跳轉(zhuǎn)點(diǎn)
CTRL-O (跳轉(zhuǎn)到前一個(gè)位置) 也能完成相同的功能。
退出幫助窗口(光標(biāo)要在幫助窗口,否則退出的不是幫助窗口):
:q <回車>
或ZZ退出
幫助窗口與當(dāng)前vim編輯窗口間的切換
ctr+w
按下<HELP>鍵(如果鍵盤上有的話)
按下<F1>鍵(如果鍵盤上有的話)
配置vim,創(chuàng)建啟動(dòng)腳本
1、開始編輯 vimrc文件
:edit ~/.vimrc unix中
:edit $VIM/_vimrc ms-win中
2、接著讀取vimrc示例文件的內(nèi)容
:r $VIMRUNTIME/vimrc_example.vim
3、保存文件,命令為
:write
下次啟動(dòng)vim時(shí),編輯器應(yīng)有了語法高亮的功能
可以將喜歡的設(shè)置添加到這個(gè)vimrc文件中
補(bǔ)全功能
ctr+d 和tab
確保vim不在兼容模式下,set nocp
查看vim是否在兼容模式,
set compatible?
顯示nocompatible 非兼容模式
顯示nocompatible 兼容模式
:!ls 可以查看當(dāng)前目錄下,所有目錄和文件
:e
ctr+d 會(huì)列出當(dāng)前目錄中所有以e開頭的目錄
tab自動(dòng)補(bǔ)全
ctrl-c 發(fā)送 SIGINT 信號給前臺(tái)進(jìn)程組中的所有進(jìn)程。常用于終止正在運(yùn)行的程序。
ctrl-z 發(fā)送 SIGTSTP 信號給前臺(tái)進(jìn)程組中的所有進(jìn)程,常用于掛起一個(gè)進(jìn)程。
fg命令重新啟動(dòng)前臺(tái)被中斷的任務(wù),
bg命令把被中斷的任務(wù)放在后臺(tái)執(zhí)行.
ctrl-d 不是發(fā)送信號,而是表示一個(gè)特殊的二進(jìn)制值,表示 EOF。
ctrl-/ 發(fā)送 SIGQUIT 信號給前臺(tái)進(jìn)程組中的所有進(jìn)程,終止前臺(tái)進(jìn)程并生成 core 文件。
二、配置.vimrc文件
1、vimrc 文件
保存你個(gè)人初始化的地方是:
Unix $HOME/.vimrc 或 $HOME/.vim/vimrc
OS/2 $HOME/.vimrc、$HOME/vimfiles/vimrc 或$VIM/.vimrc (或 _vimrc)
MS-Windows $HOME/_vimrc、$HOME/vimfiles/vimrc 或$VIM/_vimrc
Amiga s:.vimrc、home:.vimrc、home:vimfiles:vimrc或 $VIM/.vimrc
vim自帶vimrc模版文體
$VIMRUNTIME/vimrc_example.vim
在vim中查看$VIMRUNTIME變量的值
:echo $VIMRUNTIME
/usr/share/vim/vim74
注意:如果想查看外部變量,非vim內(nèi)部變量,要在命令前加!,會(huì)切換出vim中顯示,按回車,可繼續(xù)回到vim中操作
如: :!ls -l
在vim中編輯
:edit $MYVIMRC
在shell中編輯
vim ~/.vimrc
2、vimrc 示例解釋
3、簡單鍵盤映射
假設(shè)你要用一個(gè)大括號將一個(gè)特 定的單詞括起來
例如,把 "amount" 變成 "{amount}"。用 ":map" 命令,就可以讓 F5 來完成這個(gè)工作。命令如下:
:map <F5> i{<Esc>ea}<Esc>
備注 :
在輸入這個(gè)命令時(shí),<F5> 要用四個(gè)字符表示。相似地,輸入 <Esc> 不是直接按 <Esc> 鍵,而是輸入五個(gè)字符。
<F5> F5 功能鍵。這是命令的觸發(fā)器。當(dāng)這個(gè)鍵被按下時(shí),相應(yīng)的命令即被 執(zhí)行。
i{<Esc> 插入 { 字符。<Esc> 鍵用于退出插入模式。
e 移動(dòng)到詞尾。
a}<Esc> 在光標(biāo)右側(cè)插入 } 到單詞尾。
注意:執(zhí)行 ":map" 命令后,要在單詞兩端加上 {},
只需要移到單詞的第一個(gè)字符上并按 F5。
鍵盤映射 (Map)
map <F5> <Esc>bi{<Esc>ea}<Esc> ?。墼?vimrc中最后一行添加]
<Esc> 切換命令行狀態(tài)
i{將插入字符{,
<Esc> 切換命令行狀態(tài)
接著用e移到單詞結(jié)尾,
a}在詞尾右邊增加字符},
<Esc> 切換命令行狀態(tài)
光標(biāo)定位在一個(gè)單詞上(例如amount)[注意:如果光標(biāo)在a上,會(huì)定位到上1個(gè)單詞處,此處要做判斷,待后續(xù)深入學(xué)習(xí)]
,按下F5鍵,這時(shí)字符就會(huì)變成{amount}的形式。
不同模式下的鍵盤映射
Command Normal Visual Operator Pending Insert Only Command Line
vim中命令 常規(guī)模式 可視化模式 運(yùn)算符模式 插入模式 命令行模式
命令模式 選擇模式
:map y y y
:nmap y
:vmap y
:omap y
:map! y y
:imap y
:cmap y
標(biāo)記 模式
<space> 常規(guī)模式,可視化模式,運(yùn)算符模式
n 常規(guī)模式
v 可視化模式
o 運(yùn)算符模式
! 插入模式,命令行模式
i 插入模式
c 命令模式
查看鍵盤映射
:map命令,可以列出(nvo模式下的)所有鍵盤映射。其中第一列標(biāo)明了映射在哪種模式下工作:
:map!命令,則只列出(ic模式下的)插入和命令行模式的映射
:imap,:vmap,:omap,:nmap命令則只是列出相應(yīng)模式下的映射。
取消鍵盤映射
:unmap <F10>
:iunmap 取消插入模式下的鍵盤映射
:nunmap 取消常規(guī)模式下的鍵盤映射
:mapclear 取消所有映射,會(huì)移除所有用戶定義和系統(tǒng)默認(rèn)的鍵盤映射。
key-notation 按鍵符號
下面這些按鍵的名稱文檔里會(huì)用到。它們也可以用在 ":map" 命令里 (按下 CTRL-K 再按 下你想輸入的鍵就可以輸入該鍵的鍵名)。
notation meaning equivalent decimal value(s)
標(biāo)識(shí)符 含義 等價(jià)于 十進(jìn)制 值
-----------------------------------------------------------------------
<Nul> 零 CTRL-@ 0 (stored as 10) <Nul>
<BS> 退格鍵 CTRL-H 8 backspace
<Tab> 制表符 CTRL-I 9 tab Tab
linefeed
<NL> 換行符 CTRL-J 10 (used for <Nul>)
<FF> 換頁符 CTRL-L 12 formfeed
<CR> 回車符 CTRL-M 13 carriage-return
<Return> 同<CR> <Return>
<Enter> 同<CR> <Enter>
<Esc> 轉(zhuǎn)義 CTRL-[ 27 escape <Esc>
<Space> 空格 32 space
<lt> 小于號 < 60 <lt>
<Bslash> 反斜杠 \ 92 backslash <Bslash>
<Bar> 堅(jiān)杠 | 124 <Bar>
<Del> 刪除 127
<CSI> 命令序列引入 ALT-Esc 155 <CSI>
<xCSI> 圖形界面的 CSI <xCSI>
<EOL> 行尾 (可以是 <CR>、<LF> 或 <CR><LF>,
根據(jù)不同的系統(tǒng)和 ’fileformat’ 而定) <EOL>
<Up> cursor-up cursor-up cursor_up
<Down> cursor-down cursor-down cursor_down
<Left> cursor-left cursor-left cursor_left
<Right> cursor-right cursor-right cursor_right
<S-Up> shift-cursor-up
<S-Down> shift-cursor-down
<S-Left> shift-cursor-left
<S-Right> shift-cursor-right
<C-Left> Control+光標(biāo)左移鍵
<C-Right>
<F1> - <F12>
<S-F1> - <S-F12> Shift+功能鍵 1 到 12
<Help> 幫助鍵
<Undo> 撤銷鍵
<Insert> Insert 鍵
<Home>
<End>
<PageUp> Page-up
<PageDown> Page-down
<kHome> 小鍵盤 Home (左上)
<kEnd> 小鍵盤 End (左下)
<kPageUp> 小鍵盤 Page-up (右上)
<kPageDown> 小鍵盤 Page-down (右下)
<kPlus> 小鍵盤 +
<kMinus> 小鍵盤 -
<kMultiply> 小鍵盤 *
<kDivide> 小鍵盤 /
<kEnter> 小鍵盤 enter
<kPoint> 小鍵盤 小數(shù)點(diǎn)
<k0> - <k9> 小鍵盤 0 到 9
<S-...> Shift+鍵
<C-...> Control+鍵
<M-...> Alt+鍵 或 meta+鍵
<A-...> 同 <m-...>
<D-...> Command+鍵 (只用于蘋果機(jī))
<t_xx> termcap 里的 "xx" 入口鍵
4、添加插件
插件其實(shí)是一個(gè)當(dāng) Vim 啟動(dòng)的時(shí)候能被自動(dòng)執(zhí)行的腳本。
簡單地把插件放到你 Vim 的 plugin 目錄中就可以使它生效。
{僅當(dāng) Vim 編譯時(shí)加入 |+eval| 特性時(shí)才有效}
Vim 中有兩種插件:
全局插件: 用于所有類型的文件
添加一個(gè)全局插 件只要兩步:
1. 獲得一個(gè)插件的拷貝
在什么地方可以找到插件?
- 有一些與 Vim 一起發(fā)布,你可以在 $VIMRUNTIME/macros 目錄或其子目錄中找到。
- 從網(wǎng)上下載,http://www.vim.org 收集了很多。
- 在 Vim 的郵件列表中找: |maillist|。
- 自己寫一個(gè),參見 |write-plugin|。
2. 把它塞進(jìn)合適的目錄
使用一個(gè)全局插件
系統(tǒng) 插件目錄
Unix ~/.vim/plugin/
PC 和 OS/2 $HOME/vimfiles/plugin 或 $VIM/vimfiles/plugin
Amiga s:vimfiles/plugin
Macintosh $VIM:vimfiles:plugin
RISC-OS Choices:vimfiles.plugin
以 Unix 系統(tǒng)為例 (假設(shè)你還沒有 plugin 目錄):
mkdir ~/.vim
mkdir ~/.vim/plugin
cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin
注意:/usr/local/share/vim/vim60為$VIMRUNTIME,
具體路徑要進(jìn)入vim中,用:echo $VIMRUNTIME查看,
目前在下用的centos7對應(yīng)$VIMRUNTIME=/usr/shar/vim/vim74
建議:除了把這些插件直接放進(jìn) plugin/ 目錄以外,還可以更好地組織一下,把它們放進(jìn) plugin 的單獨(dú)的子目錄中。
例如,可以考慮把所有 Perl 插件放置在 "~/.vim/plugin/perl/*.vim"
文件類型插件: 僅用于特定類型的文件
Vim 的發(fā)布中包括一套針對不同文件類型的插件。你可以用如下命令啟用它們:
:filetype plugin on
如果你缺少某種文件類型的插件,或者你找到一個(gè)更好的,你可以自行添加一個(gè)。這也只 需兩步:
1. 獲取一個(gè)插件的拷貝
2. 塞到合適的目錄。
取得文件類型插件
你可以在找全局插件的相同地方找到文件類型插件
注意
插件有沒有注明文件類型, 據(jù)此你可以知道這個(gè)插件是全局的還是文件類型相關(guān)的。
在 $VIMRUNTIME/macros 中的是 全局插件;
在 $VIMRUNTIME/ftplugin 中的是 文件類型插件。
使用文件類型插件
你可以通過把插件文件放到合適的目錄中來增加一個(gè)插件。目錄的名字與前面提過的全局 插件的位置一樣,
但最后一級目錄是 "ftplugin"。
假設(shè)你找到一個(gè)用于 "stuff" 文件類 型的插件,而且你的系統(tǒng)是 Unix。那么,你可以把這個(gè)文件用如下命令移入 ftplugin 目錄:
mv thefile ~/.vim/ftplugin/stuff.vim [thefile具體文件類型插件的路徑]
如果這個(gè)文件已經(jīng)存在,你可以檢查一下兩個(gè)插件有沒有沖突。如果沒有,你可以用另一 個(gè)名字:
mv thefile ~/.vim/ftplugin/stuff_too.vim
注意:
這里,下劃線用來分開文件類型和其它部分 (這些部分可以由任意字符組成)。
但如果你 用 "otherstuff.vim" 就不行了。那是用于 "otherstuff" 類型的文件的。
文件類型插件名稱格式
一個(gè)文件類型相關(guān)的插件的名稱是:
ftplugin/<filetype>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim
<name> 可以是任何你喜歡的名字。例如,在 Unix 上,"stuff" 文件類型的插件 可以是:
~/.vim/ftplugin/stuff.vim
~/.vim/ftplugin/stuff_def.vim
~/.vim/ftplugin/stuff/header.vim
<filetype> 部分是相應(yīng)文件類型的名稱。只有對應(yīng)文件類型的文件才會(huì)用這個(gè)插 件內(nèi)的設(shè)置。
插件的 <name> 部分則不重要,你可以對同一個(gè)文件類型使用多個(gè)插件。
注意 插件必須以 ".vim" 結(jié)尾。
5、添加幫助
以 "matchit.vim" 插件為例 (包括在 Vim 中)。
這個(gè)插件使 "%" 命令可以在兩個(gè)對 應(yīng)的 HTML 標(biāo)記間,Vim 腳本的 if/else/endif 間等匹配點(diǎn)間跳轉(zhuǎn)。這非常有用,但它 不向后兼容 (這也是為什么默認(rèn)的情況下它不會(huì)被激活)。
這個(gè)插件有一個(gè)文檔: "matchit.txt"。
1、我們先來把該插件拷貝到合適的位置。這 次,我們在 Vim 內(nèi)完成這個(gè)工作,以便利用 $VIMRUNTIME。(如果某些目錄已經(jīng)存在你可 以省略一些 "mkdir" 命令)
:!mkdir ~/.vim
:!mkdir ~/.vim/plugin
:!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
"cp" 命令是基于 Unix 的,MS-DOS 上你可以用 "copy"。
2、現(xiàn)在在某個(gè) ’runtimepath’ 目錄中建立一個(gè) doc 目錄。
:!mkdir ~/.vim/doc
3、再把幫助文件拷貝進(jìn)去:
:!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc
4、現(xiàn)在開始玩技巧了,怎樣使 Vim 允許你跳轉(zhuǎn)到新的主題上?用 |:helptags| 命令產(chǎn)生一 個(gè)本地的 tags 文件即可:
:helptags ~/.vim/doc
5、現(xiàn)在,你可以用這個(gè)命令
:help g% 來獲得 "g%" 的幫助了。在使用如下命令的時(shí)候,可以看見一個(gè)新的條目:
:help local-additions
本地幫助的標(biāo)題行被自動(dòng)的加入到該節(jié)了。在那里你可以看到 Vim 添加了那些本地的幫 助文件。你還可以從這里跳轉(zhuǎn)到新的幫助中。
6、要寫一個(gè)本地幫助文件,請參考 |write-local-help|。
6、選項(xiàng)窗口
如果要找一個(gè)選項(xiàng),你可以在這里尋找?guī)椭? |options|。
另一個(gè)方法是用如下命令:[只是臨時(shí)有效,重新打開文件,失效,在.vimrc中設(shè)置,長期有效]
:options
這會(huì)打開一個(gè)新窗口,其中給出一個(gè)選項(xiàng)的列表,并對每個(gè)選項(xiàng)提供一行解釋。這些選項(xiàng) 根據(jù)種類分組。
將光標(biāo)移到一個(gè)主題上然后按 <Enter> 就可以跳轉(zhuǎn)到那里。再按一下 <Enter> 或者 CTRL-O 就可以跳回來。
你可以通過這個(gè)窗口改變一個(gè)選項(xiàng)的值。
例如,移到 "displaying text" 主題。
然后把 光標(biāo)下移到這一行:
set wrap nowrap
當(dāng)你在上面鍵入回車,這行會(huì)改變?yōu)? set nowrap wrap
現(xiàn)在,這個(gè)選項(xiàng)被關(guān)閉了。 這行的上方是對這個(gè)選項(xiàng)的簡要描述。
將光標(biāo)向上移動(dòng)一行,然后按 <Enter>,你可以跳轉(zhuǎn)到 ’wrap’ 的完整幫助,再用 CTRL-O 可以跳回來。
對于那些值為數(shù)值或者字符串的選項(xiàng),你可以編輯它的值,然后按 <Enter> 來啟用該值。
例如,把光標(biāo)移動(dòng)到下面這行: set so=0
用 $ 移到行尾,
再用 "r5" 命令修改為五,然后按 <Enter> 使修改生效。
現(xiàn)在如果你移 動(dòng)一下光標(biāo),你會(huì)發(fā)現(xiàn)在你的光標(biāo)移到窗口邊界前,你的文字就開始滾動(dòng)了。這就是選項(xiàng) ’scrolloff’ 完成的功能: 它指定在距離邊界多遠(yuǎn)的地方開始滾動(dòng)文字。
7、常用選項(xiàng)
Vim 中有很多選項(xiàng)。大部分你很少用得上。我們在這個(gè)介紹一些常用的。別忘了你可以通過 ":help" 命令獲得更多的幫助。方法是在選項(xiàng)命令前后加上單引號,例如: :help ’wrap’
查看當(dāng)前選項(xiàng)的值的方法
:set 選項(xiàng)?
如:set wrap?
顯示wrap表示打開了長行回繞
顯示nowrap表示關(guān)閉了長行回繞
如果你搞亂了一個(gè)選項(xiàng),你可以通過在選項(xiàng)后加上一個(gè) & 號把它恢復(fù)到默認(rèn)值。例如: :set iskeyword&
1、禁止回繞行[nowrap]
Vim 通常會(huì)對長行自動(dòng)回繞,以便你可以看見所有的文字。但有時(shí)最好還是能讓文字在一行中顯示完。這樣你需要左右移動(dòng)才能看到一整行。
以下命令可以關(guān)閉行的回繞:
:set nowrap
當(dāng)你移動(dòng)到那些不能顯示的文字上,Vim 會(huì)自動(dòng)向右滾動(dòng)讓你看到后面的文字,
要一次滾 動(dòng)十個(gè)字符(左邊滾動(dòng)時(shí),離左右邊界有10個(gè)字符長度),這樣就行了:
:set sidescroll=10
這個(gè)命令不改變文件中的文本,只改變顯示方式。
2、移動(dòng)命令換行[whichwrap]
很多命令只能在一行中移動(dòng)。你可以通過 ’whichwrap’ 選項(xiàng)改變它。如下命令把這個(gè)選 項(xiàng)設(shè)為默認(rèn)值:
:set whichwrap=b,s
這樣,當(dāng)光標(biāo)處于行首時(shí)用 <BS> 鍵可以回到前一行的結(jié)尾;當(dāng)處于行尾時(shí)用 <Space> 鍵可以移動(dòng)到下一行的行首。
要允許 <Left> 和 <Right> 鍵也能這樣,可以用這個(gè)命令
:set whichwrap=b,s,<,>
這只在普通模式中有效,要在插入模式中使 <Left> 和 <Right> 也有效,可以:
:set whichwrap=b,s,<,>,[,]
使指定的左右移動(dòng)光標(biāo)的鍵在行首或行尾可以移到前一行或者后一行。連接以下這些 字符,可以讓所有指定的鍵都有此功能:
字符 鍵 模式
b <BS> 普通和可視
s <Space> 普通和可視
< <Left> 普通和可視
> <Right> 普通和可視
~ "~" 普通
[ <Left> 插入和替換
] <Right> 插入和替換
還有一些可以用的標(biāo)志位,參見 ’whichwrap’。
3、顯 示 TAB 鍵
文件中有 TAB 鍵的時(shí)候,你是看不見的。要把它顯示出來:
:set list
現(xiàn)在 TAB 鍵顯示為 ^I,而 $顯示在每行的結(jié)尾,以便你能找到可能會(huì)被你忽略的空白字 符在哪里。
這樣做的一個(gè)缺點(diǎn)是在有很多 TAB 的時(shí)候看起來很丑。如果你使用一個(gè)有顏色的終 端,或者使用 GUI 模式,Vim 可以用高亮顯示空格和 TAB。使用 ’listchars’ 選項(xiàng):
:set listchars=tab:>-,trail:*
現(xiàn)在,TAB 會(huì)被顯示成 ">---" ("-" 的個(gè)數(shù)不定) 而行尾多余的空白字符顯示成 "*"??雌饋砗枚嗔?是吧?
4、關(guān)鍵字
5、顯示消息的空間
三、正則
1、正則匹配
^ 行首匹配
$ 行尾匹配
^$ 整行匹配
. 匹配任何單個(gè)字符
\特殊字符 匹配 特殊字符
2、vim中有個(gè)magic的設(shè)定。設(shè)定方法為:
:set magic " 設(shè)置magic
:set nomagic " 取消magic
:h magic " 查看幫助
vim畢竟是個(gè)編輯器,正則表達(dá)式中包含的大量元字符如果原封不動(dòng)地引用(像perl 那樣), 勢必會(huì)給不懂正則表達(dá)式的人造成麻煩,
比如 /foo(1) 命令, 大多數(shù)人都用它來查找foo(1)這個(gè)字符串,
但如果按照正則表達(dá)式來解釋,被查找的對象就成了 foo1 了。
于是,vim就規(guī)定,正則表達(dá)式的元字符必須用反斜杠進(jìn)行轉(zhuǎn)義才行, 如上面的例子,
如果確實(shí)要用正則表達(dá)式,就應(yīng)當(dāng)寫成 /foo\(1\)
magic (\m):除了 $ . * ^ 之外其他元字符都要加反斜杠。
nomagic (\M):除了 $ ^ 之外其他元字符都要加反斜杠。