国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

linux vi 操作總結

2016-08-11 07:13:23 6488

Vim/Vi 沒(méi)有菜單,只有命令

Vim/Vi 工作模式介紹:
插入模式 和  命令模式 是vi的兩個(gè)基本模式。
——插入模式 ,是用來(lái)編寫(xiě)文本內容的。
——命令模式,是用來(lái)編輯文本,如上下翻頁(yè)等,復制粘貼,跳?到指定行等操作
當前編輯的頂部或者底部會(huì )顯示vim處于何種模式下。如:mode:COMMAND!

進(jìn)入和退出vim編輯器:
進(jìn)入   vi filename(要編輯的文件名字)———>進(jìn)入了命令模式
命令模式——>輸入  :wq——>退出

保存退出
:wq      保存修改并退出
ZZ      快捷鍵,保存修改并退出(前面沒(méi)有冒號)
:q!        不保存退出

:wq!    強行保存退出,(文件所屬者科忽略文件的制度屬性)
:w        保存不退出
:wqa     保存所有文件
:w  new_filename  另存為指定文件

vim配置文件    所在目錄~/.vimrc
1.修改配置文件時(shí),可以不用加:
2.可將編輯模式下的命令寫(xiě)在里面,每個(gè)命令單獨一行,這樣每次啟動(dòng)時(shí),會(huì )自動(dòng)執行里面的命令。

~   home directory
root   /root
users  /home     zhangsan   /home/zhamgsan

命令模式——>輸入i(或者ao) ——> 插入模式
i     insert

還可以輸入其他的字母,來(lái)進(jìn)入插入模式:

___________________________________________________________________________-
插入命令
命令                    作用
a                     在光標后附加文本
A                     在本行行末附加文本
i                     在光標前插入文本
I                     在本行開(kāi)始插入文本
o (字母)              在光標下插入新行
O (字母)              在光標上插入新行

插入模式———> ESc鍵———>命令模式          http://www.tjdsmy.cn/?p=801
如果要保存文件,就要從插入模式切換為命令模式才行

命令模式——>: ——> 編輯模式
編輯模式———>命令行回車(chē)結束運行——>命令模式
在編輯模式執行完命令后,會(huì )自動(dòng)回到命令模式

——————————————————————————————
定位命令
命令                        作用
h、方向左鍵            左移一個(gè)字符
j、 方向下鍵            下移一行
k、方向上鍵            上移一行
l、 方向右鍵            右移一個(gè)字符
$                           移至行尾
0                            移至行首
_______________________________________
H                            移至屏幕上端
M                            移至屏幕中央
L                            移至屏幕下端
(                        (左小括號)移動(dòng)到上一個(gè)句子首
)                        (右小括號)移動(dòng)到下一個(gè)句子首
{                        (左大括號)移動(dòng)到上一個(gè)段落首
}                        (右大括號)移動(dòng)到下一個(gè)段落首

快速定位,括號匹配, %
在command模式下。當文本中存在  (  ,{  ,[  ,等符號時(shí)可以通過(guò)輸入  % (就是按shift鍵和數字5鍵)  來(lái)跳到括號對應的位置

[[                        光標跳轉到代碼塊開(kāi)頭即{處,要求{獨占一行
gD                        光標跳轉到局部變量定義處
''                        (兩個(gè)單引號)光標跳轉到上次??刻?/p>

————————————————————————————
快速定位   ,行頭與行尾 0 與 $
在command模式下,
命令                                作用

0(數字0鍵)                            移至行首(把光標移至當前行的起始位置,第一個(gè)非空白字符之前,簡(jiǎn)單點(diǎn)說(shuō)就是^ 的前面)
^(尖角號)                               把光標移至當前行的起始位置,也即當前行的第一個(gè)非空白字符位置
<HOME> 移動(dòng)到本行第一個(gè)字符。同0健。

$(就是按shift鍵和數字4鍵)            移至行尾
n$         移動(dòng)到下面(包括光標所在行)n行的行尾。

—————————————————————————-
單個(gè)詞組操作光標移動(dòng)命令:

命令                        作用

W (大寫(xiě))                       移動(dòng)到下一個(gè)單詞的首位置(如果連個(gè)單詞直接有 逗號連接,則認為是一個(gè)單詞)
w(小寫(xiě))                            將光標右移一個(gè)單詞的首位置。光標停留在下一個(gè)單詞的首位置(兩單詞有逗號相連,則認為逗號也是一個(gè)單詞),注意:如果已到行尾,則轉至下一行行首
nw                    向左移動(dòng)n個(gè)單詞,光標停在單詞的首位置
e                        移動(dòng)到單詞末尾(把光標移至當前所在單詞(或下一個(gè)單詞)的最后一個(gè)字符位置)
ne                    和nw類(lèi)似,只不過(guò)光標停留在單詞的尾部
E                            和小寫(xiě)用法一樣,只是以空格字符作為字的分隔符。
nE
b                        移動(dòng)到單詞的頭部(如果光標已經(jīng)在單詞的頭部,則將光標左移一個(gè)單詞。光標停留在下一個(gè)單詞的字首位置)
nb                    和nw類(lèi)似,只不過(guò)這是向右移動(dòng)
B         將光標左移一個(gè)單詞,只是以空格字符作為字的分隔符。光標停留在下一個(gè)單詞的單詞首位置位置(如果連個(gè)單詞直接有 逗號連接,則認為是一個(gè)單詞)
nB

注意:上面這些命令都使用’iskeyword‘選項中的字符來(lái)確定單詞的分界,還有幾個(gè)命令,只把空白字符當做”單詞“的分界。當然,這里說(shuō)的” 單詞“已經(jīng)不是傳統意義上的單詞了,而是由非空白字符構成一串字串。命令”W“移動(dòng)光標到下個(gè)字串的開(kāi)始,命令”B“移動(dòng)到上個(gè)字串的開(kāi)始;命令”E“移 動(dòng)到下個(gè)字串的結尾,命令”gE“移動(dòng)到上個(gè)字串的結尾。和上面的命令比較一下,發(fā)現什么規律沒(méi)有?

————————————————————————————
多個(gè)詞組光標移動(dòng):
上面我們掌握了單個(gè)詞組的移動(dòng),如果需要移動(dòng)多個(gè)詞組的光標,只需要在使用前加上要移動(dòng)的詞組的個(gè)數即可。一個(gè)英文字母的寬度是1,兩個(gè)字母的寬度等?一個(gè)漢字的寬度。
舉例如下:
Example : ABC   DEF   GHI   JKL   MNO   PQR   STUVW
假設光標現在處于Example的E處。并且vim處于command模式。那么我們先按 數字3鍵 ,再按w鍵。光標就會(huì )跳到JKL的J處。

————————————?———————————-
vim重復輸入文本:
舉例:我們要輸入gogogo。
方法如下:
vim在COMMAND模式下,先按數字3鍵,然后按 i鍵,在輸入go,再按Esc鍵。就可以輸入gogogo了。

還有,如將數字加在命令前,標示該命令處理幾次,如5dd標示執行5次dd(刪除光標所在整行)操作。
.   (英文句號)為命令重復命令,按下一次執行一次上一次執行過(guò)的命令。

————————————————————————————
快速定位,行頭與行尾 0 與 $
在command模式下,
命令                                作用
$(就是按shift鍵和數字4鍵)            移至行尾
0(數字0鍵)                            移至行首(把光標移至當前行的起始位置,第一個(gè)非空白字符之前,簡(jiǎn)單點(diǎn)說(shuō)就是^ 的前面)
^(尖角號)                               把光標移至當前行的起始位置,也即當前行的第一個(gè)非空白字符位置

————————————————————————————————
快速行定位,跳到指定的行, g 與 G

命令                        作用
:set nu                設置行號
:set nonu            去想行號

:set nu!                        取消顯示行號
gg                        到第一行
G                            到最后一行
nG                        到第n行
:n                        到第n行

Ctrl + e 向下滾動(dòng)一行

Ctrl + y 向上滾動(dòng)一行

Ctrl + d 向下滾動(dòng)半屏

Ctrl + u 向上滾動(dòng)半屏

Ctrl + f 向下滾動(dòng)一屏

Ctrl + b 向上?動(dòng)一屏

—————————————————————————-
快速定位,字母查找 f 與 F:
在command模式下,通過(guò)按  f 或者 F   快速定位內容。(不需要輸入冒號)
命令                        作用
f                            想后查找
F                            向前查找
可以結合數字來(lái)進(jìn)行多次查找,如按下  3fq   ,就會(huì )放下查找第三個(gè)q
如果不加數字,如   fq    ,就會(huì )向后查找第一個(gè)q

——————————————————--——————
查找光標下的相同詞組, * 與 #
通過(guò)  *  ,可以往后查找光標停留位置相同的詞組。  #  是向前超找
舉例:假設光標停留在第一個(gè)if處
if  we are god   if you are human

我們在command模式下,輸入  *  ,光標就會(huì )跳到“if you are human”的那個(gè)if上去

——————————————————————————————————————————————————————

字符替換
命令模式下
r                        (小寫(xiě))替換光標所在處一個(gè)字符,如ra,就是將當前光標所在處字符替換為a
R                        (大寫(xiě))開(kāi)始替換,直到按ESC鍵退出替換,相當于按下鍵盤(pán)上到insert鍵
cc                        (小寫(xiě))取代光標所在整行
S                        (大寫(xiě))與ss(小寫(xiě))效果相同
C                        (大寫(xiě))取代到行尾,包括光標處字符
c0                        (小寫(xiě),數字0)取代到行首,不包括光標處字符
c^                        (小寫(xiě))與c0(小寫(xiě),數字0)效果相同

___字符串單詞搜索和替換命令______________________________________

#命令模式下

命令                            作用
/string                        向前搜索指定字符串

?string        從光?處開(kāi)始向上開(kāi)始查找字符從string
vim中有一些特殊字符在查找時(shí)需要轉義  .*[]^%/?~$
set  ic              查找時(shí),忽略大小寫(xiě)
set noic         查找時(shí),不忽略大小寫(xiě)
:nohlsearch  關(guān)閉當前的高亮顯示,如果再次搜索或者按下n或N鍵,則會(huì )再次高亮。

:set incsearch  逐步搜索模式,對當前鍵入的字符進(jìn)行搜索而不必等待鍵入完成。

:set wrapscan  重新搜索,在搜索到文件頭或尾時(shí),返回繼續搜索,默認開(kāi)啟。

n                                查找模式下,搜索指定字符串的下一個(gè)出現位置
N                                查找模式下,往上找指定字符串出現的位置
s/old/new/ 用old替換new,替換當前行的第一個(gè)匹配
s/old/new/g 用old替換new,替換當前行的所有匹配
:%s/old/new/                 用old替換new,替換所有行的第一個(gè)匹配
:%s/old/new/g            全文替換指定字符串
:n1 ,n2s/old/new/g    ?一定范圍內替換指定字符串
若將g改為c,就會(huì )詢(xún)問(wèn)是否替換。在替換文本old或new中有特殊字符,如“/”等,都需要用進(jìn)行轉義

貼上兩篇關(guān)于vim替換的文章:

語(yǔ)法為 :[addr]s/源字符串/目的字符串/[option]

全局替換命令為::%s/源字符串/目的字符串/g

[addr] 表示?索范圍,省略時(shí)表示當前行。

如:“1,20” :表示從第1行到20行;

“%” :表示整個(gè)文件,同“1,$”;

“. ,$” :從當前行到文件尾;

s : 表示替換操作

[option] : 表示操作類(lèi)型

如:g 表示全局替換;

c 表示進(jìn)行確認

p 表示替代結果逐行顯示(Ctrl + L恢復屏幕);

省略option時(shí)僅對每行第一個(gè)匹配串進(jìn)行替換;

如果在源字符串和目的字符串中出現特殊字符,需要用””轉義

下面是一些例子:

#將That or this 換成 This or that
:%s/(That) or (this)/u2 or l1/
—-
#將句尾的child換成children
:%s/child([ ,.;!:?])/children1/g
—-
#將mgi/r/abox換成mgi/r/asquare
:g/mg([ira])box/s//mg//my1square/g    <=>  :g/mg[ira]box/s/box/square/g
—-
#將多個(gè)空格換成一個(gè)空格
:%s/  */ /g
—-
#使用空格替換句號或者冒號后面的一個(gè)或者多個(gè)空格
:%s/([:.])  */1 /g
—-
#刪除所有空行
:g/^$/d
—-
#刪除所有的空白行和空行
:g/^[  ][  ]*$/d
—-
#在每行的開(kāi)始插入兩個(gè)空白
:%s/^/>  /
—-
#在接下來(lái)的6行末尾加入.
:.,5/$/./
—-
#顛倒文件的行序
:g/.*/m0O  <=> :g/^/m0O
—-
#尋找不是數字的開(kāi)始行,并將其移到文件尾部
:g!/^[0-9]/m$ <=> g/^[^0-9]/m$
—-
#將文件的第12到17行內容復制10詞放到當前文件的尾部
:1,10g/^/12,17t$
~~~~重復次數的作用
—-
#將chapter開(kāi)始行下面的第二行的內容寫(xiě)道begin文件?
:g/^chapter/.+2w>>begin
—-
:/^part2/,/^part3/g/^chapter/.+2w>>begin
—-
:/^part2/,/^part3/g/^chapter/.+2w>>begin|+t$第二篇:vi/vim 中可以使用 :s 命令來(lái)替換字符串。該命令有很多種不同細節使用方法,可以實(shí)現復雜的功能,記錄幾種在此,方便以后查詢(xún)。:s/vivian/sky/ 替換當前行第一個(gè) vivian 為 sky:s/vivian/sky/g 替換當前行所有 vivian 為 sky:n,$s/vivian/sky/ 替換第 n 行開(kāi)始到最后一行中每一行的第一個(gè) vivian 為 sky:n,$s/vivian/sky/g 替換第 n 行開(kāi)始到最后一行中每一?所有 vivian 為 sky


n 為數字,若 n 為 .,表示從當前行開(kāi)始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個(gè) vivian 為 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky

可以使用 # 作為分隔符,此時(shí)中間出現的 / 不會(huì )作?分隔符

:s#vivian/#sky/# 替換當前行第一個(gè) vivian/ 為 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 來(lái) 替換 / ): /oradata/apras/替換成/user01/apras1/

1.:s/vivian/sky/ 替換當前行第一個(gè) vivian 為 sky

:s/vivian/sky/g 替換當前行所有 vivian 為 sky

2. :n,$s/vivian/sky/ 替換? n 行開(kāi)始到最后一行中每一行的第一個(gè) vivian 為 sky

:n,$s/vivian/sky/g 替換第 n 行開(kāi)始到最后一行中每一行所有 vivian 為 sky

(n 為數字,若 n 為 .,表示從當前行開(kāi)始到最后一行)

3. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個(gè) vivian 為 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky

4. 可以使用 # 作為分隔符,此時(shí)中間出現的 / 不會(huì )作為分隔符

:s#vivian/#sky/# 替換當前行第一個(gè) vivian/ 為 sky/

5. 刪除文本中的^M

問(wèn)題描述:對于換行,window下用回車(chē)換行(0A0D)來(lái)表示,linux下是回車(chē)(0A)來(lái)表示。這樣,將window上的文件拷到unix上用時(shí),總會(huì )有個(gè)^M.請寫(xiě)個(gè)用在unix下的過(guò)濾windows文件的換行符(0D)的shell或c程序。

。 使用命令:cat filename1 | tr -d “^V^M” > newfile;

。 使用命令:sed -e “s/^V^M//” filename > outputfilename.需要注意的是在1、2兩種方法中,^V和^M指的是Ctrl+V和Ctrl+M.你必須要手工進(jìn)行輸入,而不是粘貼。

。 在vi中處理:首先使用vi打開(kāi)文件,然后按ESC鍵,接著(zhù)輸入命令:%s/^V^M//.

。 :%s/^M$//g

如果上述方法無(wú)用,則正確的解決辦法是: [Page]

。 tr -d "\r" < src >dest

。 tr -d "\015" dest

。 strings A>B
6. 替換確認
我們有很多時(shí)候會(huì )需要某個(gè)字符(串)在文章中某些位置出現時(shí)被替換,而其它位置不被替換的有選擇的操作,這就需要用戶(hù)來(lái)進(jìn)行確認,vi的查找替換同樣支持
例如
:s/vivian/sky/g 替換當前行所有 vivian 為 sky
在命令后面加上一個(gè)字母c就可以實(shí)現,即:s/vivian/sky/gc
顧名思意,c是confirm的縮寫(xiě)

7. 其它

利用 :s 命令可以實(shí)現字符串的替換。具體的用法包括:

:s/str1/str2/ 用字符串 str2 替換行中首次出現的字符串 str1

:s/str1/str2/g 用字符串 str2 替換行中所有出現的字符串 str1

:。,$ s/str1/str2/g 用字符串 str2 替換正文當前行到末尾所有出現的字符串 str1

:1,$ s/str1/str2/g 用字符串 str2 替換正文中所有出現的字符串 str1

:g/str1/s//str2/g 功能同上

從上述替換命令可以看到:g 放在命令末尾,表示對搜索字符串的每次出現進(jìn)行替換;不加 g,表示只對搜索

字符串的首次出現進(jìn)行替換;g 放在命令開(kāi)頭,表示對正文中所有包含搜索字符串的行進(jìn)行替換操作

(原文地址: http://www.tjdsmy.cn/logs/28117977.html)

 

ddp                     交換光標所在行和其下緊鄰的一行(dd剪切當前行,p粘貼)

*                        向下完整匹配 光標所在處  的單詞
#                        向上完整匹配 光標所在處 的單詞
g*                        向下部分匹配 光標所在處  的單詞
g#                        向上部分匹配 光標所在處  的單詞

轉載請表明出處http://www.tjdsmy.cn/?p=801

_________________________________________
命令                        作用
r                         取代光標所在處字符
R                         從光標所在處開(kāi)始替換字符,按Esc結束

R命令會(huì )將鍵盤(pán)所輸入內容逐個(gè)覆蓋光標所在處以后的字符

___________________________________________________
刪除命令/剪切命令
命令                        作用
x                       刪除光標右邊的字符
nx                      刪除光標所在處左邊n個(gè)字符
X                        刪除光標左邊的字符
nX                        刪除光標左邊n個(gè)文字
d                         用于剪切刪除文字
dl                         刪除當前字符, dl=x
dh                     刪除前一個(gè)字符
dw                        刪除光標之后的單詞剩余部分,如果光標在單詞字首位置,則刪除光標右邊第一個(gè)單詞
dnw                        刪除光標之后的單詞剩余部分和n個(gè)單詞。如果光標在單詞字首位置,則刪除光標后面n個(gè)單詞
db                        刪除到某個(gè)單詞的開(kāi)始位置
de                        刪除一個(gè)單詞
dne                        刪除光標后面n個(gè)單詞
dd                      刪除光標所在行,ndd刪除n行
ndd                     刪除光標所在行向下 n 行,例如 20dd 則是刪除 20 行(常用)
dj                           刪除上一行
dk                        刪除下一行
dG                      刪除光標所在行到文件末尾的內容
d1G                    刪除光標所在行到第一行的所有數據
dgg                        刪除當前行到文件首部的所有行(包括當前行)
jdG                     刪除當前行之后所有行(包括當前行)

D                       刪除當前字符至行尾,D=d$
d$                          與D效果相同
d0                           是數字0)刪除到行首,不包含光標處的字符
d^                                與d0效果相同
:n,$d                     刪除n行及以后所有的行
:1,$d                     刪除所有行

: n1,n2d                刪除n1行到n2行之間的行
范例:
:6655,6665d

dl    刪除字符 (縮寫(xiě): "x")
diw    刪除內含單詞
daw    刪除一個(gè)單詞
diW    刪除內含字串 (見(jiàn) |WORD|)

daW    刪除一個(gè)字串 (見(jiàn) |WORD|)
dis   刪除內含句子
das"   刪除一個(gè)句子
dib  刪除內含 '(' ')' 塊
dab   刪除一個(gè) '(' ')' 塊
dip   刪除內含段落
dap   刪除一個(gè)段落
diB    刪除內含 '{ ' ' }' 大塊
"daB"    刪除一個(gè) '{ ' ' }' 大塊

___________復制剪切粘貼命令______________________________x
命令                        作用
yy、Y                        復制當前行
nyy,nY                        復制當前行一下n行(包括當前行)
p、P                        粘貼在當前光標所在行下或行上
ddp                            交換當前行和其下一行
dd                            剪切當前行
ndd                            剪切當前行一下n行(包括當前行)
:1,10d             將1-10行剪切。利用p命令可將剪切后的內容進(jìn)行粘貼。
:1, 10 m 20 將第1-10行移動(dòng)到第20行之后。

_____________________________________________________________________________

塊編輯

Ctrl+V 進(jìn)入塊選擇/塊編輯模式/塊選擇
LINUX下是Ctrl-v,但是在windows下的GVIM,Ctril-v是粘貼。所以,windows下按 Ctrl-q 進(jìn)入塊(列)編輯

v:字符選擇,會(huì )將光標經(jīng)過(guò)的地方反白選擇
V:行選擇,會(huì )將光標經(jīng)過(guò)的行反白選擇
[ctrl]+v:塊選擇,可以用長(cháng)方形的方式來(lái)選擇數據
y:復制反白的地方
d:刪除反白的地方
p   粘貼到上一行
P(大寫(xiě)的)   粘貼到下一行

$  將塊選擇中的每一行都擴展至行尾
h  停止上面的狀態(tài)

Ixxx<Esc>  在被選中的塊的前面插入xxx

0Ixxx<Esc>  在被選中的塊的每一行的行首插入xxx
Axxx<Esc>  在被選中的塊?后面追加xxx

$Axxx<Esc> 在被選中的塊的每一行的行尾追加xxx

cxxx<Esc>  在被選中的塊中刪除被選中的塊并以xxx替代
Cxxx<Esc>  在被選中的塊中刪除被選中的塊一直到第一行行尾,并以xxx替代
rx    把被選中的塊中的所有字符都替換成x

~  交換大小寫(xiě)
U  小寫(xiě)變大寫(xiě)
u  大寫(xiě)變小寫(xiě)

>  將被選中的塊向右移動(dòng)一個(gè)shift單位,空出來(lái)的地方填補空格
<  同上,但是是向左移動(dòng),但是移動(dòng)的單位同時(shí)受限于左邊的邊界

J  將下一行附在當前行的末尾,本行的尾空格與下一行的頭空格全都只用一個(gè)空格代替
gJ  同上,但是不對原文本內容做任何改動(dòng)

:read a.txt將a.txt讀入并放在當前行的下一行
:$r  a.txt將a.txt讀入并放在當前文件的最后
:0r  a.txt將a.txt讀入并放在當前文件的最開(kāi)始

:.,$w tmp將當前行到最后一行寫(xiě)入tmp文件中
:.,$w! tmp將當前行到最后一行寫(xiě)入tmp文件中,即使tmp已存在
:.write >>tmp將當前行追加到tmp文件

gU  將字符變大寫(xiě)
gUl  將當前字符變大寫(xiě)
gUw  將當前字符至該word結束變大寫(xiě)
gU$  將當前字符至行尾變大寫(xiě)
gUgU 將當前整行變大寫(xiě),可省略為gUU

gu  將字符變小寫(xiě)
gul  將當前字符變小寫(xiě)
guw  將當前字符至該word結束變小寫(xiě)
gu$  將當前字符至行尾變小寫(xiě)
gugu 將當前整行變小寫(xiě),可省略為guu

g~  改變字符大小寫(xiě)
g~l  改變當前字符大小寫(xiě)
g~w  改變當前字符至該word結束大小寫(xiě)
g~$  改變當前字符至行尾大小寫(xiě)
g~g~ 改變整行字符大小寫(xiě),可省略為g~~

:[range]![shell command] 以range范圍內的文本作為輸入去執行command命令,并將結果覆蓋寫(xiě)回range中
或者用光標移動(dòng)符代替:[range]

:read ![shell command] 運行command并將輸出寫(xiě)到當前行的下面
:0r ![shell command]  同上,輸出被寫(xiě)入文件開(kāi)頭
:write ![shell command] 運行command并將整個(gè)文件寫(xiě)入到command的輸入
:.w ![shell command]  同上,只會(huì )將當前行輸入給command

Ctrl+L 重繪屏幕

:%s/<four>/4/g 將文件中所有的單詞four替換成4

vim *.cpp
qq:%s/<GetResp>/GetAnswer/ge<Esc>:wnq9999@q 將所有cpp文件打開(kāi)并把所有的GetResp單詞換成GetAnswer

:%s/([^,]*), (.*)/2 1/ 將文件中所有的First, Last形式替換成Last First形式

g Ctrl+g 統計字數(要統計某一塊具體的字數可以使用visual模式)

K  查找man頁(yè)

:%s/s+$//  刪除所有行末空白

————————————————————————————————
WINDOWS下的GVIM的塊選擇命令是:

在gvim(windows版)中,塊選擇的快捷鍵不是<Ctrl-v>,此快捷鍵為粘貼。
先按V(貌似可以不按v),在按組合鍵Ctrl-q,然后使用hjkl來(lái)移動(dòng)光標選擇塊。

快速選擇多行,如果用 hjkl慢慢移動(dòng)就太慢了,所以,我們選擇多行,可以先輸入行號,然后輸入G(就是shift+g)。

一般的選擇模式為:v(小寫(xiě)),此時(shí)會(huì )顯示:可視。

行選擇模式為:V(大寫(xiě)),此時(shí)會(huì )顯示:可視-行。

最兇殘的塊選擇模式則為:<Ctrl-q>,此時(shí)會(huì )顯示:可視-塊。

如果希望批量插入注釋?zhuān)瑒t為以下操作順序:

1、移動(dòng)光標到注釋塊的第一行。

2、按Esc進(jìn)入Normal模式。

3、按<Ctrl-q>進(jìn)入塊選擇模式。

4、用h、j、k、l 鍵向下移動(dòng)光標(注意:這里只能用這四個(gè)鍵移動(dòng),不支持方向鍵)。

5、選中相應的行后,按I(大寫(xiě))鍵。

6、輸入//,并按Esc鍵,完成注釋。

注意:gvim中ctrl +v 變成粘貼,如果你按下 Ctrl + v 沒(méi)能進(jìn)入列選擇模式,請看這里)是因為vim的設計者用了個(gè)mswin.vim,以此能夠使用windows的快捷鍵粘貼,撤銷(xiāo)等。但是這又會(huì )和vim本 身的快捷鍵沖突。http://www.tjdsmy.cn/html/vimrc_mswin.html  。
我們還可以通過(guò)注銷(xiāo)gvim的vimrc配置文件注銷(xiāo)與 mswin.vim相關(guān)的行,則可以直接使用ctrl+v進(jìn)入塊選擇模式

————————————————————————————-
重復執行操作
很多時(shí)候一個(gè)操作,我們要執行幾遍。通過(guò)   .    來(lái)進(jìn)行重復的操作
舉例:假設光標在abc處。我們來(lái)重復刪除2個(gè)單詞:
abc  bdf   sdfe   erwer   eete   wer  uty

在command模式下,先輸入  d2w  ,然后   輸入  . (英文的句號)  ,就會(huì )不斷執行刪除兩個(gè)單詞的操作,按多少次  .   就重復多少次

————————————————————————————————————————————
撤銷(xiāo)操作:
如果編輯文本輸錯了,可在命令模式下按  u鍵  撤銷(xiāo)  和 ctrl+R  返回撤銷(xiāo)
u                         取消上一步操作(最多連續取消500次)

Ctrl+r                 恢復上一步被撤銷(xiāo)的操作
U              撤銷(xiāo)當前一行的操作

—————————————————————————————————
自動(dòng)補齊

C-n      匹配下一個(gè)關(guān)鍵字
C-p      匹配上一個(gè)關(guān)鍵字

———————————————---------------------------
簡(jiǎn)單排版
:ce(nter)                居中顯示光標所在行
:ri(ght)                靠右顯示光標所在行
:le(ft)                        靠左顯示光標所在行
J                                將光標所在下一行合并到光標所在行
>>                                光標所在行增加縮進(jìn)(一個(gè)tab)
<<                                光標所在行減少縮進(jìn)(一個(gè)tab)
n>>                        光?所在行開(kāi)始的n行增加縮進(jìn)
n<<                        光標所在行開(kāi)始的n行減少縮進(jìn)

——————————————————————————————————————————————
多tab|窗口拆分
:tabnew [++opt選項] [+cmd] 文件            建立對指定文件新的tab
:tabc       關(guān)閉當前的tab
:tabo       關(guān)閉所有其他的tab
:tabs       查看所有打開(kāi)的tab
:tabp      前一個(gè)
:tabn      后一個(gè)
關(guān)閉窗口
:close             最后一個(gè)窗口不能使用此命令,可以防止意外退出vim。
:q 如果是最后一個(gè)被關(guān)閉的窗口,那么將退出vim。

標準模式下:
gt , gT 可以直接在tab之間切換。
還有很多他命令, 看官大人自己, :help table 吧。

:new    水平切割窗口
:split    水平切割窗口(或者直接輸入   :sp  也可以)
:vsplit   垂直切割( 也可以  :vs  )
Ctrl+ww 移動(dòng)到下一個(gè)窗口
或者 先按組合鍵ctrl+w ,然后都松開(kāi),然后通過(guò)j/k/h/l(等于vim移動(dòng)的方向鍵) 來(lái)移動(dòng)大哦哦左/上/下/右的窗口
Ctrl+wj 移動(dòng)到下方的窗口

Ctrl+wk 移動(dòng)到上方的窗口

vim -o a.txt b.txt c.txt為每一個(gè)文件打開(kāi)一個(gè)水平分割窗?
vim -O a.txt b.txt c.txt為每一個(gè)文件打開(kāi)一個(gè)垂直分割窗口

:only  錄制宏。按q鍵加任意字母開(kāi)始錄制,再按q鍵結束錄制(這意味著(zhù)vim中的宏不可嵌套),使用的時(shí)候@加宏名,比如qa。。。q錄制名為a的宏,@a使用這個(gè)宏。

vim中的幾個(gè)文本對象:aw 一個(gè)單詞;  as 一個(gè)句子;  ap 一個(gè)段落

zfap 創(chuàng )建一個(gè)段落的折行

zc 關(guān)閉折行

zo 打開(kāi)折行

———————————————————————————————————
vimdiff a.txt b.txt打開(kāi)a.txt和b.txt并進(jìn)行比較(這個(gè)是shell中的命令)

:vertical diffsplit a.txt打開(kāi)分割窗口用于比較當前文件和a.txt
:set scrollbind同步滾動(dòng) noscrollbind不同步滾動(dòng)

qa  將后續命令錄制在寄存器a中(從a到z有26個(gè)可用)
q  停止錄制
@a  執行寄存器a中錄制的命令
@@  執行剛剛執行過(guò)的寄存器中的命令
qA  向寄存器a中追加命令

"Ayy 將當前行追加復制到寄存器A中

:[range]s+from+to+[flags] 把range范圍內的from替換成to
:[range]s=from=to=[flags] 把range范圍內的from替換成to
:[range]s/from/to/[flags] 把range范圍內的from替換成to
range為空時(shí),只對當前行有效
range為%時(shí),對所有行都有效
flags為空時(shí),只替換指定行的第一個(gè)from
flags有g(shù)時(shí),替換指定行的所有from
flags有c時(shí),要求用戶(hù)對每次替換進(jìn)行確認
flags有p時(shí),要求:s命令列出所有改變的行
flags有e時(shí),要求:s命令在沒(méi)有找到任何匹配時(shí)也不要報錯

:1,5s/from/to/g 把第1行到第5行中所有的from替換成to
:3s/from/to/g 把第3行中所有的from替換成to
:.write a.txt 把當前行寫(xiě)入a.txt
:.,$s/from/to/g 把當前行到文件結束所有的from替換成to

:?^Chapter?,/^Chapter/s/from/to/g 把上一個(gè)Chapter到下一個(gè)Chapter之間的所有from替換成to
:.+3,$-5s/from/to/g 把當前+3行到倒數第5行的全部from替換成to
:'a,'bs/from/to/g 把從a標記的行到b標記的行(包含a和b行)中全部from替換成to,注意是單引號不是倒引號

:[range]g/{pattern}/{command} 在range范圍內找到匹配pattern的行然后執行command命令
這里的command必須是:開(kāi)頭的命令,而不能直接使用normal模式下的命令,除非使用|:normal|

————————————————————————————————————————--
~  改變光標所?字符的大小寫(xiě),并將光標移動(dòng)到下一個(gè)字符上

:edit foo.txt在vim中開(kāi)始編輯另一個(gè)文件
:edit! foo.txt強制丟棄當前未保存的修改
:next 轉到下一個(gè)文件,可以縮寫(xiě)為:n
:next! 強制丟棄未保存的修改并轉到下一個(gè)文件
:wnext 保存當前文件的修改并轉到下一個(gè)文件
:previous 轉到上一個(gè)文件
:wprevious 保存當前文件的修改并轉到上一個(gè)文件
:last 轉到最后一個(gè)文件
:first 轉到第一個(gè)文件
:2next 轉到下面第二個(gè)文件

:bn  轉到下一個(gè)文件,若到最后一個(gè)文件,則轉到第一個(gè)文件

:bp  轉到上一個(gè)文件,若到第一個(gè)文件,則轉到最后一個(gè)文件

:args 查看整個(gè)列表中有哪些文件
:args a.txt b.txt c.txt重新定義一個(gè)文件列表
:args *.txt打開(kāi)所有txt文件

Ctrl+^ 快速切換到上一個(gè)文件
`"  移動(dòng)光標到上一次離開(kāi)該文件時(shí)光標所在的位置
`.  移動(dòng)光標到最后一次對文件做出修改的位置

mA  設置當前位置為全局標記A(大寫(xiě)字母)
`A  跳轉到全局位置A,即使它不在當前文件內

:set backup生成備份文件

"fy  把選中的內容復制到寄存器f中
"fp  把寄存器f中的內容粘貼出來(lái)
"wdaw 把光標所在的word刪除并放入寄存器w中

:write >> logfile把當前文件寫(xiě)入(追加)到logfile中

vim -R 只讀打開(kāi)
vim -M 強制禁止修改打開(kāi)

:edit a.txt打開(kāi)文件a.txt
:saveas b.txt把當前緩沖區存入b.txt并同時(shí)打開(kāi)b.txt進(jìn)行編輯
:file c.txt把當前文件的名字改為c.txt

———————————————————————————————————————————————
書(shū)簽
mx                設定書(shū)簽,x是任意一個(gè)字母,通常小寫(xiě)(a-z),x為小寫(xiě)字母時(shí),局限在一個(gè)文件之間切換;大寫(xiě)字母時(shí),可在文件之間切換.
`x                (`位于數字鍵1旁邊)跳轉到書(shū)簽x
:marks                        查看標簽

#############################################實(shí)例#########################################
應用實(shí)例
導入文件或shell執行結果到正在編輯的文件中
:r 文件名
:r /etc/issue    將issue內容導入正在編輯的文件中
:!shell命令                在vim中?行shell命令,執行完后按回車(chē)會(huì )到vim界面
:r !shell命令        (r與!之間有空格)將shell命令執行的結果導入到本文件中

在Vi中執行命令   :!命令
:!ls /root            在編輯文件同時(shí)查看/root下的文件情況
不用退出vim
:r !date                在vim下將date命令的結果導入編輯文件中

定義快捷鍵          :map  快捷鍵 觸發(fā)命令
ctrl+v  再ctrl+p             或者直接ctrl+v+p ,
不要把^當做尖角號,
:map ^x 命令        (map與^之間、x與命令之間有空格,此處到^并非鍵盤(pán)上的^,而是按下ctrl+v出現到快捷鍵,表示ctrl鍵,后面到x為任意字母)按下ctrl+x后會(huì )執行對應到命令
例:
:map ^p I#<ESC> 當按下ctrl+p快捷組合鍵時(shí),在光標所在行行首添加一個(gè)#號,并回到命令模式

范例:       :map ^P I#<ESC>
ctrl+p=插入#號然后回到命令模式
I表示vim的插入命令

:map ^E iksharpdabu@qq.com
ctrl+E=插入,i表示當前光標處插入
:map ^B 0x
ctrl+B=將光標移至行首刪除光標所在字符
0表示移至行首,x表示刪除光標所在字符

連續行注釋  :n1 ,n2s/^/#/g
在行首加#,^表示行首
:n1 ,n2s/^#//g
將行首的#號刪除
:n1 ,n2s/^////g
表示轉義符

替換             :ab ksharp  ksharpdabu@qq.com
輸入ksharp,回車(chē)或者空格后,就變成了
ksharpdabu@qq.com
:unab    ksharp  ksharpdabu@qq.com
取消替換

連續行注釋
:n1,n2/^/#/g                (#號為注釋符號,在shell中注釋符號為#,C++中為//)
:n1,n2/^////g        C++源文件多行連續注釋

——————————————————————————————————————————————-

相關(guān)插件設置
########################################
phpcomplete插件

如何使用:
vi index.php
插入一段php代碼后比如:
htmlsp
先按下 Ctrl+x進(jìn)入^X模式,再按下 Ctrl+o, 就能看到提示列表框,以及對應的function,還有對應的函數定義比如參數等等
Ctrl+n, Ctrl+p 來(lái)上下選擇,ESC 來(lái)取消提示

在Insert模式下:

<backspace> 刪除光標前的一個(gè)字符

<del> 刪除光標所在的一個(gè)字符

Ctrl+W 刪除光標前的一個(gè)單詞

Ctrl+U 刪除光標前的一個(gè)行(按照輸入順序,不一定直接刪到行首)

Ctrl+p  補全單詞
Ctrl+n  補全單詞(向前查找)
Ctrl+x Ctrl+f 補全文件名
Ctrl+x Ctrl+l 補全整行內容
Ctrl+a 補全上一次insert模式下插入的內容

Ctrl+v 插入一個(gè)由ascii碼表示的符號,三位ascii碼或者遇到第一個(gè)非數字時(shí)生效

————————————————————————————————————————————------
########################################
auto pair插件(自動(dòng)封閉括號等)     關(guān)閉/開(kāi)啟  ctrl+p

##########################################
netrw.vim插件
vim中查看到文件的目錄結構
:e  /home/zebra/myprogram/src
附帶的操作目錄文件快捷鍵如下:
<F1>     顯示幫助
<cr>     如果光標下是目錄, 則進(jìn)入該目錄; 如果光標下文件, 則打開(kāi)該文件
-            返回上級目錄
c            切換vim 當前工作目?正在瀏覽的目錄
d            創(chuàng )建目錄
D            刪除目錄或文件
i            切換顯示方式
R            文件或目錄重命名
s            選擇排序方式
x            定制瀏覽方式, 使用你指定的程序打開(kāi)該文件

###################################################
"taglist插件
:TlistOpen
:TlistClose
################################################

"NERDTree 插件
map <F6> :NERDTreeToggle<CR>
按鍵
C(大寫(xiě) C 鍵)
將光標所在目錄設置為根目錄

u(小寫(xiě) u 鍵)
轉到上一級目錄

o(小寫(xiě) o 鍵,不是“零”)
展開(kāi)(或折疊)光標所在目錄的子目錄。如果光標所在位置是一個(gè)文件,則在編輯窗口中打開(kāi)該文件

此外在目錄樹(shù)窗口中輸入目錄 :Bookmark 收藏名 還可以將光標所在目錄添加到收藏夾中。下次使用 :BookmarkToRoot 收藏名 可以直接轉到該目錄,并且以該目錄作為根目錄。更多命令可以參考 NERDTree 的幫助文檔。

############################################################################
NERD Commenter插件設置
下載安裝后,修改vim的配置文件,在下面加入
" NERD_commenter.vim

" <Leader>ca 在/*...*/與//這兩種注釋方式中切換(其它語(yǔ)言可能不一樣了)
let mapleader=","     "leader默認是    ,為了方便,改為  逗號
map  <F7>   <leader>c$  "注視到行尾
map <F8> <leader>cc   ”單行注釋
map <F9> <leader>cu   "取消注釋
map <F12> <leader>ca   "sexy多行代碼注釋

/*

*/

這種

注意:leader默認符號是    ,我這里用let來(lái)修改leader 符號為逗號 ,即便如此,注釋時(shí)也要同時(shí)按好幾個(gè)鍵,比如:
注釋3行代碼,要依次輸入    3 ,  c  空格鍵       四個(gè)按鍵。  同時(shí)速度要快,否則就不是注釋?zhuān)兂闪诵薷奈臋n的內容了。我當時(shí)安裝NERD Commenter試了半天,都沒(méi)注釋成功。后來(lái)看了比人的文章,飛快的按下這幾個(gè)按鍵,就注釋成功了。但是還是太繁瑣了,就修改為一個(gè)按鍵,就可以注釋 /取消注釋。按我的這樣修改后,
F7                        注視到行尾
F8                         單行注釋
先按x,后按F8     即注釋x行的代碼,記得按的速度要快
F9                        取消注釋 ,也可以與數字搭配
F12                      sexy的代碼注釋  ,也可以與數字搭配

依次按    ,  c   a                表示//  和/*   */ 兩種注釋間切換。這個(gè)我就沒(méi)設置一鍵操作 ,大家個(gè)以根據自己的情況改成某個(gè)按鍵

###########################################################
txtBrowser 插件

<Leader>s: 用搜索引擎(可定制, 默認為google)搜索光標下的單詞或選中的文本.
<Leader>f: 用網(wǎng)絡(luò )字典(可定制, 默認為google.cn)對光標下的單詞或選中的文本查字典.
<Leader>g: 打開(kāi)光標下或選中的URL.
<Leader>h: 高亮光標下的單詞或選中的文本(可跨行).
*:                 向前搜索光標下的單詞或選中的文本(可跨行)

?:                 向后搜索光標下的單詞或選中的文本(可跨行)

########################相關(guān)vim技巧#################################3
1.用:set list來(lái)查看所有不可見(jiàn)字符,反之用:set nolist關(guān)閉
2.vim操作ftp,打開(kāi):
:e ftp://192.168.0.1/1.txt
保存(如果不存在則創(chuàng )建):
:w ftp://192.168.0.1/1.txt
讀?。?br/>:r ftp://192.168.0.1/1.txt
以上操作第一次打開(kāi)時(shí)需要輸入用戶(hù)名和密碼,
以后就不用了,vim 會(huì )記住的。
3.Ctrl+R 是在編輯時(shí)或者命令行界面下調入寄存器值的熱鍵,Ctrl+R+/ 會(huì )得到上一次查詢(xún)的條件,Ctrl+R+<寄存器名>; 相當于 Normal 模式下的 "<寄存器名>;p 命令
4.vim在編輯一個(gè)文件時(shí)如果打開(kāi)多個(gè)文件,:args <CTRL-R>;% file2 file3
5.如何刪除連續兩行之間的回車(chē)符,使連續的兩行成為一行,Jx
6.想顯示行號,可以用 :set nu
7.vim中光標在C函數和系統調用上時(shí),按K進(jìn)入man手冊頁(yè)
8.V 打開(kāi)"可視模式"(不是虛擬模式,虛擬是 virtual)后,可以有很多種辦法移動(dòng)光標的,不一定非得用 h j k l , 比如可以搜索定位, 也可以用 [[ ]] ][ [] } { 等段落定位的命令. v]] v[[ v} 這樣就可以選中一大塊,而不用一行一行地選 還有 H L 這些都可以用. 詳細請 help motion 另外, vim 內置了很多以 a 打頭的文本對象, 如 a{ 表示一個(gè) {} 塊, ap 表示一個(gè)段落等等。=a{ 就可以重排當前語(yǔ)法塊.
9.全選的命令是 ggVG gg表示到第一行第一個(gè)字母, V進(jìn)入visual line G則到文件尾。
10.vim是否支持將語(yǔ)法高亮度顯示的結果保存為一個(gè)html文檔,:TOhtml
11.用:split new | r!ls 來(lái)獲得外部命令的輸入,其中r !ls 則表示執行外部命令 ls,并且捕獲(讀入)它的輸出。
12.vi中用``就可以回到剛才的位置,vim中用ctrl+o
13.用:set ai的命令來(lái)啟動(dòng)自動(dòng)縮進(jìn)。用:syntax on命令來(lái)啟動(dòng)語(yǔ)法著(zhù)色
14.在"插入模式"下刪除光標到行尾的字符,^od$,^o 表示同時(shí)按住 Ctrl 和 O 鍵,其實(shí)也可以是^oD,還有就是如果要刪除到某個(gè)字符位置的話(huà),就用^odfx,x表示要刪除到的字符
15.自動(dòng)縮進(jìn)set autoindent 和set cindent
16.括號自動(dòng)補全:iab ( ()
17.刪除所有偶數行<ESC>;ggqajddq10000@a
18.排版代碼gg=G
19.:args查看正在編輯的文件名或者用ctrl+g
20.gj gk 分別可以向下、向上移動(dòng)一個(gè)物理行

 

切換vim目錄:

:cd   目錄路徑

修改當前vim編輯的文件的文件名

:f    新文件名

 

 

關(guān)于代碼折疊相關(guān)的快捷鍵,大家其實(shí)可以自己在vim中輸入 :help zo  來(lái)查看打開(kāi)和關(guān)閉折疊的相關(guān)解釋:

你可以在用戶(hù)手冊的第 28 章找到有關(guān)折疊的序論。|usr_28.txt|

1. 折疊方法        |fold-methods|
2. 折疊命令        |fold-commands|
3. 折疊選項        |fold-options|
4. 折疊行為        |fold-behavior|

{Vi 沒(méi)有折疊}
{僅當編譯時(shí)加入 |+folding| 特性才有效}

==============================================================================
1. 折疊方法                    *fold-methods*

可用選項 'foldmethod' 來(lái)設定折疊方法。

設置選項 'foldmethod' 為非 "manual" 的其它值時(shí),所有的折疊都會(huì )被刪除并且創(chuàng )建新
的。如果設置成 "manual",將不去除已有的折疊??梢岳眠@一點(diǎn)來(lái)先自動(dòng)定義折疊,
然后手工調整。

有 6 種方法來(lái)選定折疊:
manual        手工定義折疊
indent        更多的縮進(jìn)表示更高級別的折疊
expr        用表達式來(lái)定義折疊
syntax        用語(yǔ)法高亮來(lái)定義折疊
diff        對沒(méi)有更改的文本進(jìn)行折疊
marker        對文中的標志折疊

手 工                        *fold-manual*

使用命令來(lái)手工定義要折疊的范圍。分析文本并發(fā)現折疊的腳本也可用這種方法。

折疊的級別僅由嵌套次數來(lái)定義。要對一定行數的折疊增加級別,可以對相同的行反復定
義折疊。

當你退出文件編輯時(shí),手工折疊會(huì )被遺棄。要保存折疊,使用 |:mkview| 命令。之后要
恢復可以使用 |:loadview|。

縮 進(jìn)                        *fold-indent*

由縮進(jìn)行自動(dòng)定義折疊。

折疊級別由行的縮進(jìn)除以 'shiftwidth' (向下取整) 計算而得。連續的,有同樣或更高
的折疊級別的行,形成一個(gè)折疊。在其中,有更高折疊級別的行形成嵌套的折疊。

嵌套的級別數受 'foldnestmax' 選項限制。

某些行會(huì )被忽略并得到上一行或下一行的折疊級別 (取較小值)。符合條件的這樣的行要
么是空行,要么以 'foldignore' 選項里包含的字符開(kāi)始。在查找 'foldignore' 里包含
的字符時(shí),空白字符會(huì )被忽略。對于 C,該選項使用 "#" 來(lái)略過(guò)要預處理的那些行。

當你想用另一種方式來(lái)略過(guò)行時(shí),使用 'expr' 方法。在 'foldexpr' 中 |indent()| 函
數被用來(lái)取得一行的縮進(jìn)。

表 達 式                        *fold-expr*

就象用 "indent" 方式一樣,表達式方式的折疊也是由折疊級別自動(dòng)定義的。對每行,通
過(guò)計算選項 'foldexpr' 的值來(lái)并得到它的折疊級別。如:
?所有以制表符開(kāi)始的連續的幾行,創(chuàng )建折疊: >
:set foldexpr=getline(v:lnum)[0]=="\t"
調用一函數來(lái)計算折疊級別:   >
:set foldexpr=MyFoldLevel(v:lnum)
用空白行分開(kāi)的段落構成折疊:   >
:set foldexpr=getline(v:lnum)=~'^\s*$'&&getline(v:lnum+1)=~'\S'?'<1':1
同上:   >
:set foldexpr=getline(v:lnum-1)=~'^\s*$'&&getline(v:lnum)=~'\S'?'>1':1
備注: ":set" 要特殊處理的字符必須用反斜杠轉義。(空格,反斜杠,雙引號等等,參考
|option-backslash|)

這些是表達式的計算條件:
- 當前緩沖區和窗口值依所在行而定
- 變量 "v:lnum" 被定為該行行號
- 計算結果將用以下方式解釋:
值            代表 ~
0            這行不折疊
1, 2, ..        這行的折疊級別 1,2 等
-1            折疊級別沒(méi)有定義,使用這行之前或之后一行的級別值,取其
中較小的一個(gè)。
"="            使用上一行的折疊級別。
"a1", "a2", ..    上一行的折疊級別加 1,2,..
"s1", "s2", ..    上一行的折疊級別減 1,2,..
"<1", "<2", ..    此折疊級別在本行結束
">1", ">2", ..    此折疊級別在本行開(kāi)始

不需要用 ">1" ("<1") 標志?疊的開(kāi)始 (結束)。當這行折疊級別高于 (低于) 上一行的
級別時(shí),折疊將開(kāi)始 (結束)。

表達式必須沒(méi)有副作用。在緩沖區里的文字,光標位置,查找模式,選項等等,不能被改
動(dòng)。如果你非常小心,改動(dòng)并恢復這些設置還是可以的。

表達式中有錯誤或者計算結果不能識別時(shí),Vim 不會(huì )產(chǎn)生錯誤消息,而是將折疊級別設為
0。所以當需要調試時(shí),可將 'debug' 選項設為 "msg",錯誤消息就可以被見(jiàn)到了。

備注: 由于每一行關(guān)于表達式的值都要被計算,這一折疊方式可能會(huì )很慢!

最好避免使用 "=" , "a" 和 "s" 作為返回值,因為 Vim 不得不經(jīng)常向后回溯以得到折
疊級別。這會(huì )降低執行速度。

|foldlevel()| 計算相對于上一折疊級別的折疊級別。但要注意,如果該級別未知,
foidlevel() 返回 -1。它返回的級別對應于該行開(kāi)始的位置,盡管折疊本身可能在該行
結束。

折疊可能會(huì )沒(méi)有及時(shí)更新。用 |zx| 或者 |zX| 可以強制折疊更新。

語(yǔ) 法                        *fold-syntax*

由帶有 "fold" 參數的語(yǔ)法項來(lái)定義折疊。|:syn-fold|

折疊級別由嵌套的折疊層數來(lái)定義。嵌套數由 'foldnestmax' 限定。

要小心指定合適的語(yǔ)法同步方式。如果這里有問(wèn)題,折疊和顯示高亮可能會(huì )不一致。尤其
在使用可能跨越多行的模式時(shí)更要小心。如果有疑問(wèn),不妨嘗試如下的強制同步: >
:syn sync fromstart
<

比 較                        *fold-diff*

對沒(méi)有改動(dòng)的文本或靠近改動(dòng)的文本自動(dòng)定義折疊。

這個(gè)方法僅適用于當前窗口設定 'diff' 選項來(lái)顯示不同之處時(shí)才有效。不然,整個(gè)緩沖
區就是一個(gè)大的折疊。

選項 'diffopt' 可以指定上下文。即折疊和不被折疊包括的改變之間相距的行數。比
如,設定上下文為 8: >
:set diffopt=filler,context:8
默認值是 6。

當設定了 'scrollbind' 選項時(shí),Vim 會(huì )試圖在其它比較窗口中打開(kāi)相同的折疊,這樣這
些窗口就會(huì )顯示同一處文本。

標 志                        *fold-marker*

在文本中可以加入標志來(lái)指明折疊開(kāi)始和結束的地方。這可以讓你精確的定義折疊。這也
讓你可以放心地刪除和復制折疊而不用擔心錯誤包括了某些行。選項 'foldtext' 通常設
置為使折疊行顯示折疊標志之前的文本。這樣做可以為折疊命名。

標志可以包含級別數,也可以使用匹配對。包含級別數較簡(jiǎn)單,你無(wú)須添加結束標志,并
可以避免標志不配對的問(wèn)題。如: >
/* global variables {{{1 */
int varA, varB;

/* functions {{{1 */
/* funcA() {{{2 */
void funcA() {}

/* funcB() {{{2 */
void funcB() {}

?疊開(kāi)始于 "{{{" 標志。接下去的數字決定了折疊級別。產(chǎn)生的效果依當前折疊級別和
該折疊標志給定的級別的大小關(guān)系而定:
1. 如果遇到級別相同的標志,上一個(gè)折疊結束,另一個(gè)有同樣級別的折疊開(kāi)始。
2. 如果遇到級別更高的標志,開(kāi)始一個(gè)嵌套的折疊。
3. 如果遇到級別更低的標志,所有大于或等于當前級別的折疊結束,且指定級別的折疊
開(kāi)始。

數字指定了折疊級別。不能使用 0 (忽略級別為 0 的標志)。你可以使用 "}}}" 帶上一
個(gè)數字來(lái)表示這個(gè)級別的折疊結束。此行以下的折疊級別將比當前級別小一。備注: Vim
不會(huì )回溯匹配的標志 (這將耗費太多的時(shí)間)。如: >

{{{1
fold level here is 1
{{{3
fold level here is 3
}}}3
fold level here is 2

你也可以用一對匹配標志 "{{{" 和 "}}}" 來(lái)定義折疊。每個(gè) "{{{" 使折疊級別加 1,
"}}}" 使折疊級別減 1。注意一定要使標志匹配!如: >

{{{
fold level here is 1
{{{
fold level here is 2
}}}
fold level here is 1

帶數字的標志和沒(méi)有帶數字的標志可以混合使用。對于一個(gè)大折疊我們可以使用帶數字的
標志,在函數的內部我們可以使用不帶數字的。如對文件中的 "結構定義","局部變量"
和 "函數原型" 各個(gè)部分,使用級別 1 的折疊。對定義和函數體使用級別 2 的標志。而
在函數內部可以使用不帶數字的標志。當你在一函數中作更改以分割折疊時(shí),你無(wú)須記著(zhù)
標志在哪里。

選項 'foldmarker' 可設定所用的標志。建議保留默認值 "{{{,}}}"。這樣在 Vim 用戶(hù)
間交換文件時(shí)就不會(huì )出問(wèn)題。有時(shí)為了要編輯的文件必須改變該選項 (如,文件包含了來(lái)
自另一個(gè)編輯器的折疊標志,或對于當前文件的語(yǔ)法而言,折疊標志會(huì )產(chǎn)生歧義等)。

*fold-create-marker*
"zf" 可通過(guò)標志來(lái)創(chuàng )建一個(gè)折疊。 Vim 將為你插入開(kāi)始和結束標志。這些標志由
'foldmarker' 指定。標志會(huì )被添加在行末。如果 'commentstring' 不為空,使用之。
以下情況下可能無(wú)法正常工作:
- 此行已有一個(gè)帶級別的標志了。Vim 無(wú)法判斷該如何做。
- 在附近的折疊里使用了帶級別的標志,使添加無(wú)法進(jìn)行。
- 這行包含在一注釋中,且 'commentstring' 不為空,且嵌套的注釋是非法的。如,在
C 的注釋中加入 /* {{{ */ ,這將使現有的注釋中斷。你可以在注釋之前或之后添加
標志,或手工添加。
總的來(lái)說(shuō),當你已有帶級別的標志時(shí),再讓 Vim 為你創(chuàng )建標志不是個(gè)好主意。

*fold-delete-marker*
"zd" 可用來(lái)刪除一個(gè)用標志定義的折疊。 Vim 將為你刪除標志。Vim 將?折疊的開(kāi)始和
結束處根據 'foldmarker' 查找開(kāi)始和結束標志。如果標志周?chē)淖趾?'commentstring'
匹配,這些文字也會(huì )被刪除。
但在以下情況下無(wú)法正確執行:
- 當一行包含有多于一個(gè)的標志且其中一個(gè)指定了級別。Vim 不考慮結果是不是真能刪除
折疊,而僅刪除第一個(gè)標志。
- 當這個(gè)標志帶有級別且同時(shí)被用來(lái)開(kāi)始或結束幾個(gè)折疊時(shí)。

==============================================================================
2. 折疊命令                    *fold-commands* *E490*

所有的折疊命令用 "z" 開(kāi)頭。提示: 如果你從側面看 "z" 象一張疊起來(lái)的紙。

創(chuàng ) 建 和 刪 除 折 疊 ~
*zf* *E350*
zf{motion}  或
{Visual}zf    創(chuàng )建折疊操作符。
僅當 'foldmethod' 設為 "manual" 或 "marker" 時(shí)有效。
用 "manual" 方式,新建的折疊會(huì )被關(guān)閉。同時(shí) 'foldenable' 會(huì )被設
定。
參考 |fold-create-marker|。

*zF*
zF        對 [count] 行創(chuàng )建折疊。其余同 "zf" 。

:{range}fo[ld]                        *:fold* *:fo*
對 {range} 內的行創(chuàng )建折疊。其余同 "zf" 。

*zd* *E351*
zd        刪除 (delete) 在光標下的折疊。當光標在被折疊的行上,該折疊被刪
除。嵌套的折疊上移一級。在可視模式下所選區域 (部分) 涵蓋的折疊
都被刪除。注意: 這種一次刪除多個(gè)折疊的簡(jiǎn)單方法不可撤銷(xiāo)。
僅當 'foldmethod' 設為 "manual" 或 "marker" 時(shí)有效。
參考 |fold-delete-marker|。

*zD*
zD        循環(huán)刪除 (Delete) 光標下的折疊。在可視模式下所選區域 (部分) 涵
蓋的折疊和嵌套的折疊都被刪除。
僅當 'foldmethod' 設為 "manual" 或 "marker" 時(shí)有效。
參考 |fold-delete-marker|。

*zE* *E352*
zE        除去 (Eliminate) 窗口里所有的折疊。
僅當 'foldmethod' 設為 "manual" 或 "marker" 時(shí)有效。
參考 |fold-delete-marker|。

打 開(kāi) 和 關(guān) 閉 折 疊 ~

一個(gè)小于 'foldminlines' 的折疊的顯?就象它被打開(kāi)時(shí)一樣。所以,以下的命令對于小
折疊所起的作用與描述不同。

*zo*
zo        打開(kāi) (open) 在光標下的折疊。當給定計數時(shí),相應深度的折疊被打
開(kāi)。在可視模式下,所選區域的所有行的折疊被打開(kāi)一級。

*zO*
zO        循環(huán)打開(kāi) (Open) 光標下的折疊。不在光標下的折疊不改變。
在可視模式下,打開(kāi)所有的在選中區域里的折疊,包括被部分選中的。

*zc*
zc        關(guān)閉 (close) 在光標下的折疊。當給定計數時(shí),相應深度的折疊被關(guān)
閉。在可視模式下,所選區域里的所有行的折疊被關(guān)閉一級。
'foldenable' 被設定。

*zC*
zC        循環(huán)關(guān)閉 (Close) 在光標下的所有折疊。不在光標下的折疊不改變。
在可視模式下,關(guān)閉所有的在選中區域里的折疊,包括被部分選中的。
'foldenable' 被設定。

*za*
za        當光標位于一關(guān)閉的折疊上時(shí),打開(kāi)之。當折疊嵌套時(shí),你?能需要用
"za" 數次。當給定計數時(shí),打開(kāi)相應數量的被關(guān)閉的折疊。
當光標位于一打開(kāi)的折疊上時(shí),關(guān)閉之且設定 'foldenable' 。這僅關(guān)
閉一級折疊,因為再次使用 "za" 將再次打開(kāi)折疊。當給定計數時(shí),關(guān)
閉相應數量的折疊 (這不同于重復 "za" 許多次)。

*zA*
zA        當處在一關(guān)閉的折疊上時(shí),循環(huán)地打開(kāi)折疊。
當處在一打開(kāi)的折疊上時(shí),循環(huán)地關(guān)閉折疊且設定 'foldenable'。

*zv*
zv        查看 (view) 光標所在的行: 僅打開(kāi)足夠的折疊使光標所在的行不被折
疊。

*zx*
zx        更新折疊: 撤消被手工打開(kāi)和關(guān)閉的折疊: 再次應用 'foldlevel'。
然后使用 "zv" : 查看光標所在行。
同時(shí)強制重新計算折疊。使用 "foldexpr" 并且緩沖區發(fā)生改變但折疊
不能正確地更新時(shí),這會(huì )有用。

*zX*
zX        手工恢復被打開(kāi)和關(guān)閉的折疊: 再次應用 'foldlevel'。
也同時(shí)強制重新計算折疊,同 |zx|。

*zm*
zm        折起更多 (more): 'foldlevel' 減 1。如果 'foldlevel' 已經(jīng)為 0,
則不會(huì )被減小。
'foldenable' 被設定。

*zM*
zM        關(guān)閉所有折疊: 'foldlevel' 設為 0。
'foldenable' 被設定。

*zr*
zr        減少 (reduce) 折疊: 'foldlevel' 加 1。

*zR*
zR        打開(kāi)所有的折疊。'foldlevel' 設為最高級別。

*:foldo* *:foldopen*
:{range}foldo[pen][!]
在 {range} 內打開(kāi)折疊。當加上 [!] 時(shí),所有的折疊都被打開(kāi)。對查
看在 {range} 內的所有文本很有用。沒(méi)有 [!] 時(shí),打開(kāi)一級折疊。

*:foldc* *:foldclose*
:{range}foldc[lose][!]
在 {range} 內關(guān)閉折疊。當加上 [!] 時(shí),所有的折疊都被關(guān)閉。對隱
藏在 {range} 內的所有文本很有用。沒(méi)有 [!] 時(shí),關(guān)閉一級折疊。

*zn*
zn        不折疊 (none): 復位 'foldenable'。所有的折疊被打開(kāi)。

*zN*
zN        正常折疊 (normal): 設定 'foldenable'。所有的折疊都展現它們之前
的樣子。

*zi*
zi        翻轉 'foldenable' 的值。

在 折 疊 間 移 動(dòng) ~

*[z*
[z        到當前打開(kāi)的折疊的開(kāi)始。如果已在開(kāi)始處,移到包含這個(gè)折疊的折疊
開(kāi)始處。如果沒(méi)有包含它的折疊,命令執行失敗。
當給定計數,重復此命令 [count] 次。

*]z*
]z        到當前打開(kāi)的折疊的結束。如果已在結束處,移到包含這個(gè)折疊的折疊
結束處。如果沒(méi)有包含它的折疊,命令執行失敗。
當給定計數,重復此命令 [count] 次。

*zj*
zj        向下移動(dòng)。到達下一個(gè)折疊的開(kāi)始處。關(guān)閉的折疊也被計入。
當給定計數,重復此命令 [count] 次。
此命令可在 |operator| 后使用。

*zk*
zk        向上移動(dòng)到前一折疊的結束處。關(guān)閉的折疊也被計入。
當給定計數,重復此命令 [count] 次。
此命令可在 |operator| 后使用。

對 折 疊 執 行 命 令 ~

:[range]foldd[oopen] {cmd}            *:foldd* *:folddoopen*
對所有不在關(guān)閉的折疊中的行執行 {cmd}。
給定 [range] 時(shí),僅對范圍內那些行起作用。
每次命令被執行時(shí),光標會(huì )被定位在要被操作的行上。
就如 ":global" 命令: 首先標記出所有不在關(guān)閉的折疊中的行。然后
對所有標記過(guò)的行,執行 {cmd}。所以當 {cmd} 改變了文本的折疊
時(shí),對命令執行的位置沒(méi)有影響 (當然,刪除行例外)。
如: >
:folddoopen s/end/loop_end/ge
<        使用標志位 "e" 避免了當 "end" 不匹配時(shí)得到錯誤消息。

:[range]folddoc[losed] {cmd}            *:folddoc* *:folddoclosed*
對所有在關(guān)閉的折疊里的行,執行 {cmd}。
其它同 ":folddoopen" 命令。

==============================================================================
3. 折疊選項                    *fold-options*

顏 色                            *fold-colors*

對關(guān)閉的折疊的顏色的設定由 Folded 高亮組 |hl-Folded| 決定。對折疊欄的顏色的設
定由 FolderColumn 高?組 |hl-FoldColumn| 決定。
下面是設定顏色的例子: >

:highlight Folded guibg=grey guifg=blue
:highlight FoldColumn guibg=darkgrey guifg=white
<

折 疊 級 別                        *fold-foldlevel*

'foldlevel' 是個(gè)數值選項: 數字越大則打開(kāi)的折疊更多。
當 'foldlevel' 為 0 時(shí),所有的折疊關(guān)閉。
當 'foldlevel' 為正數時(shí),一些折疊關(guān)閉。
當 'foldlevel' 很大時(shí),所有的折疊打開(kāi)。
'foldlevel' 的改變后立即生效。之后,折疊可以被手動(dòng)地打開(kāi)和關(guān)閉。
當其值增大,在新級別 (譯者注: 舊級別?) 之上的折疊被打開(kāi)。手工打開(kāi)的折疊不會(huì )被
關(guān)閉。
當其值減小,在新級別之上的折疊被關(guān)閉。手工關(guān)閉的折疊不會(huì )被打開(kāi)。

折 疊 文 本                        *fold-foldtext*

'folftext' 是個(gè)字符串選項,定義了一個(gè)表達式。這個(gè)表達式被用來(lái)求得關(guān)閉折疊所顯
示的文字。如: >

:set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\*\|\*/\|{{{\d\=','','g')

顯示了折疊的第一行,除去其中的 "/*"、"*/" 和 "{{{" 。
備注: 使用反斜杠是為了避免一些字符被 ":set" 命令解釋。使用一個(gè)函數更簡(jiǎn)單: >

:set foldtext=MyFoldText()
:function MyFoldText()
:  let line = getline(v:foldstart)
:  let sub = substitute(line, '/*|*/|{{{d=', '', 'g')
:  return v:folddashes . sub
:endfunction

'foldtext' 的計算是在沙盤(pán) |sandbox| 里完成的。其中的當前窗口設為要顯示該行的窗
口。錯誤被忽略。

默認值是 |foldtext()|。對于大多數類(lèi)型的折疊它可以返回適合的文字。如果你不喜歡
它,你可以自己指定 'foldtext' 表達式??梢允褂靡韵逻@些 Vim 變量:
v:foldstart    折疊首行的行號
v:foldend    折疊末行的行號
v:folddashes    一個(gè)含有連字符的字符串,用來(lái)表示折疊級別
v:foldlevel    折疊級別

在結果中,制表符被替換為空格,而不可顯示的字符被替換為可顯示的字符。

結果行被截短以適合窗口的寬度,永遠不會(huì )回繞。
當在文字后有空余時(shí),用 'fillchars' 來(lái)填充。

備注: 對那些 ":set" 命令作特殊處理的字符在其前面須加上反斜杠。如: 空格,反斜杠
和雙引號。 |option-backslash|

折 疊 欄                        *fold-foldcolumn*

'foldcolumn' 是個(gè)數字,它設定了在窗口的邊上表示折疊的欄的寬度。當為 0 時(shí),沒(méi)有
折疊欄。一個(gè)普通值是 4 或 5。最小可用的值是 2,不過(guò) 1 仍然可以提供一些信息。最
大是 12。

一個(gè)打開(kāi)的折疊由一欄來(lái)表示,頂端是 '-',其下方是 '|'。這欄在折疊結束的地方結
束。當折疊嵌套時(shí),嵌套的折疊出現在被包含的折疊右方一個(gè)字符位置。

一個(gè)關(guān)閉的折疊由 '+' 表示。

當折疊欄太窄而不能顯示所有折疊時(shí),顯示一數字來(lái)表示嵌套的級別。

在折疊欄點(diǎn)擊鼠標,可以打開(kāi)和關(guān)閉折疊:
- 點(diǎn)擊 '+' 打開(kāi)在這行的關(guān)閉折疊
- 在任何其他非空字符上點(diǎn)擊,關(guān)閉這行上的打開(kāi)折疊

其 他 選 項

'foldenable'  'fen':    復位時(shí)打開(kāi)所有折疊。
'foldexpr'    'fde':    用于 "expr" 折疊的表達式。
'foldignore'  'fdi':    用于 "indent" 折疊的字符。
'foldmarker'  'fmr':    用于 "marker" 折疊的標志。
'foldmethod'  'fdm':    當前折疊方法。
'foldminlines' 'fml':    關(guān)閉折疊的最小顯示行數。
'foldnestmax' 'fdn':    用于 "indent" 和 "syntax" 折疊的最大嵌套層數。
'foldopen'    'fdo':    哪一種命令可以打開(kāi)關(guān)閉的折疊。
'foldclose'   'fcl':    當光標不在折疊上時(shí)關(guān)閉折疊。

==============================================================================
4. 折疊行為                        *fold-behavior*

當上下移動(dòng)和滾動(dòng)時(shí),光標將移至連續折疊的行的第一行。當光標已在被折疊的行上時(shí),
它移動(dòng)到下一個(gè)沒(méi)有被折疊的行上,或下一個(gè)關(guān)閉的折疊。

當光標在被折疊的行上時(shí),光標總是顯示在第一列。標尺顯示確切的標位置。光標本應
也在實(shí)際位置顯示的,但因為被折疊而無(wú)法做到。

許多移動(dòng)命令處理連續被折疊的行就象處理空行一樣。如,"w" 命令只在首列停一次。

在插入模式下,光標所在的行不會(huì )被折疊。這讓你看得見(jiàn)你鍵入的內容。

當使用操作符時(shí),一個(gè)關(guān)閉的行被作為整體處理。所以 "dl" 在光標下刪除了整個(gè)關(guān)閉的
折疊。

對 Ex 命令的執行范圍被調整,使得它總是從關(guān)閉折疊的第一行開(kāi)始,在關(guān)閉折疊的最后
一行結束。所以,命令: >
:s/foo/bar/g
當光標在關(guān)閉的折疊上時(shí),它將在整個(gè)折疊里用 "bar" 替換 "foo"。
不過(guò) |:folddoopen| 和 |:folddoclosed| 的操作并非如此。

編輯一個(gè)已經(jīng)被編輯過(guò)的緩沖區時(shí),上次被使用的折疊設置會(huì )被再次使用。對手工定義折
疊方式,已經(jīng)被定義的折疊會(huì )被恢復。對所有的折疊方式,手工打開(kāi)和關(guān)閉的折疊會(huì )被恢
復。如果這個(gè)緩沖區曾經(jīng)在這個(gè)窗口里被編輯,過(guò)去用的值被恢復。否則,來(lái)自該緩沖區
最近一次編輯的窗口值被使用。

==============================================================================

統計單詞數、行數等 *count-items*

如果需要統計緩沖區中一個(gè)模式 (pattern) 出現的頻率,使用 substitute 命令并加入

'n' 標志位以避免實(shí)際的替代。Vim 報告的已替代的數目就是模式出現的次數。例: >

:%s/./&/gn字符數

:%s/i+/&/gn單詞數

:%s/^//n行數

:%s/the/&/gn任何地方出現的 "the"

:%s/<the>/&/gn作為單詞出現的 "the"

你可能希望復位 'hlsearch' 或者使用 ":nohlsearch"?

如果你希望沒(méi)有匹配的時(shí)候不顯示錯誤,那么增加標志位 'e'。

另一種辦法就是在可視模式下使用 v_g_CTRL-G。

=========================================

*08.3* 調整窗口大小

:split 命令可以接受計數前綴。如果指定了這個(gè)前綴,這個(gè)數將作為窗口的高度。例如

如下命令可以打開(kāi)一個(gè)三行的窗口并編輯文件 alpha.c:

>

:3split alpha.c

對于已經(jīng)打開(kāi)的窗口,你可以用有幾種方法改變它的大小。如果你有鼠標,很簡(jiǎn)單: 把鼠

標指針移到分割兩個(gè)窗口的狀態(tài)欄上,上下拖動(dòng)?可。

要擴大窗口:

>

CTRL-W +

要縮小窗口:

>

CTRL-W -

這兩個(gè)命令接受計數前綴用于指定擴大和縮小的行數。所以 "4 CTRL-W +" 會(huì )使窗口增高

4 行。

要把一個(gè)窗口設置為指定的高度,可以用這個(gè)命令:

>

{height}CTRL-W _

就是先輸入一個(gè)數值,然后輸入 CTRL-W 和一個(gè)下劃線(xiàn) (在美式英語(yǔ)鍵盤(pán)中就是 Shift

加上 "-")。

    要把一個(gè)窗口擴展到盡可能大,可以使用無(wú)計數前綴的 CTRL-W _ 命令。

使 用 鼠 標

在 Vim 中,你可以用鍵盤(pán)很快完成很多工作。但很不幸,改變窗口大小要敲不少鍵。在

這種情況下,使用鼠標會(huì )更快一些。把鼠標指針移到狀態(tài)條上,按住左鍵并拖動(dòng)。狀態(tài)條

會(huì )隨之移動(dòng),這會(huì )使一個(gè)窗口更大一個(gè)更小。

選 項

'winheight' 選項設置最小的期望窗口高度而 'winminheight' 選項設置最小的 "硬性"

高度。

    同樣,'winwidth' 設置最小期望寬度而 'winminwidth' 設置最小硬性寬度。

    'equalalways' 選項使所有的窗口在關(guān)閉或者打開(kāi)新窗口的時(shí)候總保持相同大小

轉載自:http://www.tjdsmy.cn/?p=801

提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->