大家VIM(一久新的器)[九]
set 功能定
?
本元可是 vi(m) 的微功能,可依您人的喜好做有限度的整。由於 vim 做了相的充,文主要是述 vim 的定,但 elvis 有的也明。但不打算一打,只明重要、常用的部份,其它的可以 :h option-list 查。Linux Journal 四月份(April, 2000)有一篇於 configuring Vim 的文章,有趣的朋友也可考一下,不依的版本是 vim 5.5 版,而非最新的 5.6 版。
?
?
在何定呢?
可在上做定,例如 :set ai 或 :set noai,ai 是 autoindent 的,就可以上改格的定,但 vim 後就又恢原。要永久定就得在定中。 vim 的定在:
~/.exrc~/.vimrc~/.gvimrc GUI 版本$VIM/vimrc$VIM/gvimrc GUI 版本windows 版本在 $VIM/_vimrc 及 $VIM/_gvimrc 您要把 GUI 的定在 ~/.vimrc 也是可以的,但分可能以後要修改比找得到地方改。 那 $VIM 在哪呢? /usr/share/vim 或 /usr/local/share/vim 是就定的,但可在 ~/.profie 或 ~/.bashrc 中另。windows 版本可在 autoexec.bat 中。
elvis 的在:~/.exrc~/.elvislib/elvis.rcwindows 版本在 C:\Program Files\elvis\elvis.rc 如果您的系上同有 vim 及 elvis,使用 ~/.exrc 要小心,以免互相影了定。好是可以把共同的定在 ~/.exrc 。 拜您一下!在定中 set 前然是不必冒的。:-)
?
如何得知目前的定
:set 或 :se 示所有修改的部份,就是和值不一的部份。:set all 示目前所有定值容。:set option? 示 option 定的目前值。:set option 直接上定,有些定需加 = 後加上定值容。:set nooption 取消定。:set 後面是可以多重定的。例如 :set autoindent noconfirm autowrite,三定就同重。
您然可以改定改定值。在 vim 也可以使用 :opt[ion] 直接上定,列出目前的定,在 set 字上按 Enter 即可改定,或就直接修改其值亦可,改完後按 :q 就可以了。在短明按 Enter 叫出部份的明您考,您方不方便?改好後
:mk[exrc] 入 ~/.exrc :mkv[imrc] 入 ~/.vimrc
然您得先搞清楚您目前所在目在什地方,如果您是在家目的那就不用心了,否找不到您的新 .vimrc 可不要信我。:-) elvis 可就方便了,得自行修改 ~/.exrc 或 ~/.elvislib/elvis.rc
?
各set功能明
autoindent(ai)自排,也就是如果本行是第五字元始的,您按 Enter後游就停在次行第五字元。是不打的。autowrite(aw)案一有更就自存。不打。background(bg) <vim 才有>可成 dark 或 light,是不同的 highlight 色定,$VIMRUNTIME/syntax/synload.vim。不您要更色的定,最好是在 ~/.vimrc 或 ~/.gvimrc 中,原始最好不要去她。ㄟㄟㄟ,你提 $VIMRUNTIME 好不好!其是最近版本的 vim 了不至安新版本把版本的一些定或 macro 掉,所以 $VIMRUNTIME 就是 $VIM/vimxx,xx 就是版本啦!例如您使用的是 vim 5.6 版,那就是 $VIM/vim56。
backup(bk)是否要 backup file。不打。writebackup(wb) <vim 才有>在入案前先份一份,和 backup 的作用不相同,:h backup-table。是打的,所以您如果不要 backup,那要掉的是目,而不是 backup。但先查一下您是不是有去, :ver。backupdir(bdir) <vim 才有>定存放 backup file 的目。在所的案之所在目。binary(bin) <vim 才有>在二位,是防止存二位把 EOL 也二位,那就悔不初,如果是法再看,如果是可行就法行了!因此是 off。elvis 自判是否二位,而且分成左右半,左半部以 16 位的方式示,右半部是以 ASCII 的方式示。
browsedir(bsdir) <vim 才有>案的目,GUI 版本始有。是上一次的目。就是 GUI版本功能表上的 [File] -> [Open] 打的目。cindent(cin) <vim 才有> C 很好用,indent 比一般敏感, C 程式而。 off。 C/C++ code 自打。cmdheight(ch) <vim 才有>列的行,一行,建成行。compatible(cp) <vim 才有>和原始 vi 相容的,vim 的充功能被抑制。 off。confirm(cf) <vim 才有>各作。 off。directory(dir)swap 存放的目。前面元已有明。fileformat(ff) <vim 才有>是入案置放 EOL(end of line) 的形式dos 是以 0D 0A 行。unix 是以 0A 行。mac 是以 0D 行。以各系平而定,在 Linux 然是 unix 形式。fileformats(ffs) <vim 才有>可指定多,依入的案形式整 ff。例如 :set ffs=unix,dos ff=unix unix 格式,但如入的是 dos 格式的案,自整 dos 格式,存就以 dos 格式存(列示)。。此如要改成 unix 格式,可 set ff=unix 然後存就成unix 格式,反之亦然。如果不,也就是您不管 ff 或 ffs 都成 unix,那入 dos 格式的案在每行尾出 ^M 字元(就是 0D 啦!)使 :set ff=unix 也不及了!只好 :%s/^M//g 消去 ^M。ㄟ,得怎替?就是把 ^M 成有啦!而且 ^M 怎打出的得吧!翻一翻前面的元吧! Hey,你怎知道是 0D 呀!好吧!告您一密秘,您把游移到 ^M 那位置,然後按 ga 在列就示 10,16,8 位的值。其它的字元也是可以如此示。a 就是 ascii 的意思。但是 vim 的充功能,elvis 有。 elvis 使入 dos 格式的案,也是自把 ^M 藏起。
ignorecase(ic)找不分大小,中文造成困。 off。incsearch(is) <vim 才有>加式找功能,在入 patern 立即反移至目前入之patern 上。 off。hlsearch(hls) <vim 才有>找,符合字串反白表示。 off。如果您是使用 vim 的的 vimrc 的,在 F8 切。textwidth(tw)是一 word wrap 的功能,左起算之固定每行的最大字元度。超此度就自折行,可是真的折行,也就是在折行插入 EOL。是 0,也就是有 word wrap 的功能。wrapmargin(wm)和 textwidth 作用相同,只是是右窗向左算起要字元起折行。是 0。textwidth wrapmargin 的功能目前不用於中文,打中文是您自行按 Enter 吧!wrap也是折行功能,可是只是幕效果的折行,上有插入 EOL。wrapscan(ws)和折行有,是指找,找至尾,是否要首找。是要。paste <vim 才有>是防止在做剪位置不正,前面元已有明。ruler(ru) <vim 才有>在列示游所在之行列,不打,但建打。最右之代的意如下:Top 案第一行在幕可。Bot 案最後一行在幕可。All 案首尾皆在一幕。如非以上三情形,示相百分比位置。statusline(stl) <vim 才有>列示的格式,使用就可以了,如果您想包一下的,那就您 :h stl。shiftwidth(sw)指由 >> 移整行容,一次移的字元度,一般是使用 Tab 的值,但可由定改。tabstop(ts)一 Tab 度。是 8 字元度。最好不要便改,以免您的西由其它器造成困,解,vim 有一softtabstop 的制,在下一明。showcmd(sc)在列示目前所行的指令。showmode(smd)在列示目前的模式,例如是 Insert mode 或是 Visual mode。然平常的 normal mode(commond mode)是不示的。viusalbell(vb) <vim 才有>以幕代替 beep 。number(nu)示行。注意,冒命令也有 :nu 是示游所在行的行,您嫌多打一字的,:# 也行。不如果 ruler 打的,在列本就示前游所在的行列值。list也可以算是一模式,list mode。就是 Tab 的地方以 ^I 示,而行尾之 EOL 示成 $。可以您清楚的知道 Tab 在哪,折行是不是真的。swapfile(swf) <vim 才有>是否需 swap 至磁碟。如果 noswf 的,那不有 swapfile生,通通入在中。是要 swapfile。fileencoding(fe) <vim 才有>首先先鼓掌一下,啪啪啪…,因有支援 taiwan,也支援 XIM,也就是可以使用 xcin-2.5x 作入,然您用 xcin-2.3x 配合XA 也是可以啦!目前支援繁中文、日文、文,unicode 尚未植入。但前提是您要把 multi_byte 去,在一始就了。是使用 ansi。set guifont 及 set guifontset 已在一始,在此就不重了。history(hi)冒命令的史,就是可以用上下方向叫出的那。是 20 。
?
於softtabstop(sts)
乎所有的 OS 及都定 Tab 就是 8 字元,已是公值,您硬要去改它的恐怕多不便,但上於程式格,多人又 8 字元太了,巢圈下就需折行,反而不方便。因此 vim 您,建了 softtabstop 的功能,就是由 vim 代您造出一假的 Tab,上是空白字元成的 Tab。
例子明比清楚。
set softtabstop=4set shiftwidth=4
由 4 空白字元取代一 Tab,您按 Tab vim 就跳 4 格,需注意的是,如果您按了三次 Tab ,那就是一的 Tab 加上四空白字元,可不是 12 空白字元喔!是混合 Tab 及 space 的。
了!那我要按真正的 8 字元的 Tab 怎?,得怎按特殊字元? Ctrl-v Tab 或 Ctrl-v I 就可以了,那就是如假包的 8 字元之 Tab。然,您按次 Tab 不就得了!:-)
?
於折行
前面已 set wrap 就可以造成幕折行,可是把一英文字折成半,在很不雅。好了,vim 再您一次,set linebreak(lbr) 就避免生,在空白或符的地方折行,但也仍幕折行,不插入 EOL。功能目前在中文判上是出槌!:-(