?? usr_05.cnx
字號(hào):
*usr_05.txt* Vim version 6.3 最近更新:2004年6月 VIM用戶手冊(cè) - by Bram Moolenaar (譯者:Nek_in http://vimcdoc.sf.net) 選項(xiàng)設(shè)置Vim 可以按你的需要進(jìn)行設(shè)置。本章告訴你怎樣使 Vim 用你指定的選項(xiàng)啟動(dòng),怎樣增加插件以增強(qiáng) Vim 的功能;以及怎樣進(jìn)行宏定義。|05.1| vimrc 文件|05.2| vimrc 示例解釋|05.3| 簡(jiǎn)單鍵盤(pán)映射|05.4| 增加插件|05.5| 增加幫助|05.6| 選項(xiàng)窗口|05.7| 常用選項(xiàng) 下一章:|usr_06.txt| 使用語(yǔ)法加亮 前一章:|usr_04.txt| 做小改動(dòng) 目錄:|usr_toc.txt|=============================================================================*05.1* vimrc 文件 *vimrc-intro*可能你已經(jīng)厭倦了輸入那些經(jīng)常用到的命令了。要讓 Vim 用你習(xí)慣的設(shè)置啟動(dòng),你可以把這些設(shè)置寫(xiě)到一個(gè)叫 vimrc 的文件中。Vim 會(huì)在啟動(dòng)的時(shí)候讀入這個(gè)文件。如果你不知道你的 vimrc 在什么地方,可以使用如下命令:> :scriptnames命令列出的文件列表開(kāi)頭的幾個(gè)中應(yīng)該有一個(gè)叫 ".vimrc" 或者 "_vimrc" 的文件在你的home 目錄中。 如果你還沒(méi)有 vimrc 文件,請(qǐng)參考 |vimrc| 一節(jié)看看你應(yīng)該在什么地方創(chuàng)建 vimrc文件。另外 ":version" 命令能告訴你 vim 在什么地方找 "用戶的 vimrc 文件"。對(duì)于 Unix 系統(tǒng),肯定是如下文件:> ~/.vimrc對(duì)于 MS-DOS 和 MS-Windows,常常使用下面其中一個(gè)文件:> $HOME/_vimrc $VIM/_vimrcvimrc 文件可以包含任何冒號(hào)命令。最簡(jiǎn)單的是設(shè)置選項(xiàng)命令。例如,如果你想 Vim 啟動(dòng)的時(shí)候始終開(kāi)啟 'incsearch' 選項(xiàng),可以在你的 vimrc 文件中加上:> set incsearch要使這個(gè)命令生效,你需要重啟動(dòng) Vim。后面我們還會(huì)學(xué)到如何不退出 Vim 就能讓它生效。這一章只解釋最基本的東西。想了解更多關(guān)于 Vim 腳本的知識(shí),請(qǐng)參見(jiàn)|usr_41.txt|。=============================================================================*05.2* vimrc 示例解釋 *vimrc_example.vim*在第一章中,我們?cè)?jīng)介紹過(guò)怎樣用 vimrc 示例文件(包括在 Vim 發(fā)布中)使 Vim 以非vi 兼容模式啟動(dòng)(參見(jiàn)|not-compatible|)。這個(gè)文件可以在這里找到: $VIMRUNTIME/vimrc_example.vim ~我們?cè)谶@一節(jié)中介紹這個(gè)文件中用到的一些命令。這會(huì)對(duì)你自行參數(shù)設(shè)置有一定的幫助。但我們不會(huì)介紹所有的內(nèi)容。你需要用 ":help" 獲得更多的幫助。> set nocompatible就像第一章所述,這些手冊(cè)解釋了 Vim 工作在改進(jìn)的方式下,因此與 Vi 不完全兼容。要關(guān)閉 'compatible' 選項(xiàng)設(shè),'nocompatible' 可以用于完成這個(gè)功能。> set backspace=indent,eol,start這指明在插入模式下 <BS> 如何刪除光標(biāo)前面的字符。逗號(hào)分隔的三個(gè)值分別指:行首的空白字符,分行符和插入模式開(kāi)始處之前的字符。> set autoindent這使 Vim 在啟動(dòng)一個(gè)新行的時(shí)候使用與前一行一樣的縮進(jìn)。就是說(shuō),新行前面會(huì)有同樣多的空白字符。啟動(dòng)新行是指用 <Enter> 換行,在普通模式下執(zhí)行 "o" 命令等情況。> if has("vms") set nobackup else set backup endif這告訴 Vim 當(dāng)覆蓋一個(gè)文件的時(shí)候保留一個(gè)備份。但 VMS 系統(tǒng)除外,因?yàn)?VMS 系統(tǒng)會(huì)自動(dòng)產(chǎn)生備份文件。備份文件的名稱(chēng)是在原來(lái)的文件名上加上 "~" 字符。參見(jiàn) |07.4| > set history=50這個(gè)命令保存 50 個(gè)命令和 50 個(gè)查找模式的歷史。如果你想 Vim 記住多些或者少些命令,可以把這個(gè)數(shù)改成其它值。> set ruler總在 Vim 窗口的右下角顯示當(dāng)前光標(biāo)位置。> set showcmd在 Vim 窗口右下角,標(biāo)尺的右邊顯示未完成的命令。例如,當(dāng)你輸入 "2f",Vim 在等你輸入要查找的字符并且顯示 "2f"。當(dāng)你再輸入w,"2fw" 命令被執(zhí)行,"2f" 自動(dòng)消失。 +-------------------------------------------------+ |text in the Vim window | |~ | |~ | |-- VISUAL -- 2f 43,8 17% | +-------------------------------------------------+ ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ 'showmode' 'showcmd' 'ruler'> set incsearch在查找模式輸入完前顯示匹配點(diǎn)。> map Q gq這定義一個(gè)鍵映射。下一節(jié)會(huì)介紹更多的相關(guān)內(nèi)容。這將定義 "Q" 命令用來(lái)完成與 "gq"操作符相同的功能,這是在 Vim 5.0 版前 "Q" 命令的作用。如果沒(méi)有設(shè)置這個(gè)映射,"Q" 會(huì)啟動(dòng) Ex 模式,這也許不是你想要的情況。> vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>這是一個(gè)復(fù)雜映射。這里不介紹它是怎么工作的。它的作用是使 "p" 命令在可視模式下用拷貝的字符覆蓋被選中的字符。你可以看到映射可以被用來(lái)執(zhí)行相當(dāng)復(fù)雜的操作。但其本質(zhì)依然是一個(gè)命令序列而已,與你直接輸入沒(méi)有什么兩樣。> if &t_Co > 2 || has("gui_running") syntax on set hlsearch endif這激活語(yǔ)法加亮功能,但僅在顏色功能有效的時(shí)候才有效。而 'hlsearch' 選項(xiàng)告訴Vim 加亮上次查找模式匹配的地方。"if" 命令在設(shè)置選項(xiàng)的時(shí)候非常有用,它使設(shè)置命令在某些條件下才執(zhí)行。更多的內(nèi)容請(qǐng)參見(jiàn)|usr_41.txt|。 *vimrc-filetype* > filetype plugin indent on這啟動(dòng)三個(gè)非常靈巧的機(jī)制:1. 文件類(lèi)型探測(cè) 當(dāng)你開(kāi)始編輯一個(gè)文件的時(shí)候,Vim 會(huì)試圖確定這個(gè)文件的類(lèi)型。當(dāng)編輯 "main.c" 時(shí),Vim 會(huì)根據(jù)擴(kuò)展名 ".c" 認(rèn)為這是一個(gè) C 源文件。當(dāng)你編輯一個(gè)文件前面是 "#!/bin/sh" 的文件時(shí),Vim 會(huì)把它認(rèn)作 "sh" 文件。文件類(lèi)型探測(cè)用于語(yǔ)法加亮 和以下另兩項(xiàng)。請(qǐng)參見(jiàn)|filetypes|。2. 使用文件類(lèi)型相關(guān)的插件 不同的文件需要不同的選項(xiàng)支持。例如,當(dāng)你編輯一個(gè) "c" 文件,用 'cindent' 選項(xiàng)來(lái)自動(dòng)縮進(jìn)就非常有用。這些文件類(lèi)型相關(guān)的選項(xiàng)在 Vim 中是通過(guò)文件類(lèi)型 插件來(lái)實(shí)現(xiàn)的。你也可以加入自己的插件,請(qǐng)參見(jiàn) |write-filetype-plugin|。3. 使用縮進(jìn)文件 當(dāng)編輯程序的時(shí)候,行縮進(jìn)通常可以被自動(dòng)決定。Vim 用不同的策略處理不同的 文件類(lèi)型。請(qǐng)參見(jiàn) |:filetype-indent-on| 和 'indentexpr'。> autocmd FileType text setlocal textwidth=78這使 Vim 在一行長(zhǎng)于 78 個(gè)字符的時(shí)候自動(dòng)換行,但僅對(duì)純文本文件中有效。這里包括兩個(gè)部分。其中 "autocmd FileType text" 定義個(gè)自動(dòng)命令,表示當(dāng)文件類(lèi)型被設(shè)置為"text" 的時(shí)候,后面的命令自動(dòng)執(zhí)行。"setlocal textwidth=78" 設(shè)置 'textwidth'選項(xiàng)為78,但僅對(duì)本文件有效。> autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif這是又一個(gè)自動(dòng)命令。這回它設(shè)置為在讀入任何文件之后自動(dòng)執(zhí)行。后面那堆復(fù)雜的東西檢查 '" 標(biāo)記是否已被定義,如果是,則跳轉(zhuǎn)到該標(biāo)記。行首的反斜杠用于把所有語(yǔ)句連接成一行。這可以避免一行寫(xiě)得太長(zhǎng),請(qǐng)參見(jiàn) |line-continuation|。這只在 Vim腳本文件中有效,在命令行中無(wú)效。=============================================================================*05.3* 簡(jiǎn)單鍵盤(pán)映射映射可以使你把一系列 Vim 命令綁定為一個(gè)單鍵。假設(shè)你要用一個(gè)大括號(hào)將一個(gè)特定的單詞括起來(lái)。例如,把 "amount" 變成 "{amount}"。用 ":map" 命令,就可以讓 F5 來(lái)完成這個(gè)工作。命令如下:> :map <F5> i{<Esc>ea}<Esc>< Note: 在輸入這個(gè)命令時(shí),<F5> 要用四個(gè)字符表示。相似地,輸入 <Esc> 不是直接按 <Esc> 鍵,而是輸入五個(gè)字符。在讀這份手冊(cè)要注意這些區(qū)別!讓我們來(lái)分解一下這個(gè)命令: <F5> F5 功能鍵。這是命令的觸發(fā)器。當(dāng)這個(gè)鍵被按下時(shí),相應(yīng)的命令即被 執(zhí)行。 i{<Esc> 插入 { 字符。<Esc> 鍵用于退出插入模式。 e 移動(dòng)到詞尾。 a}<Esc> 插入 } 到單詞尾。執(zhí)行 ":map" 命令后,要在單詞兩端加上 {},只需要移到單詞上的第一個(gè)字符并按 F5。在這個(gè)例子中,觸發(fā)器是一個(gè)單鍵;它還可以是任何字符串。但若你使用一個(gè)已經(jīng)存在的 Vim 命令,該命令將不在有效。所以你最好避免出現(xiàn)這種情況。 一個(gè)可用于映射的鍵是反斜杠。因?yàn)槟愫芸赡芟攵x多個(gè)映射,那就加上另一個(gè)字符。你可以映射 "\p" 為在單詞兩端加園括號(hào),而映射 "\c" 為加花括號(hào),例如:> :map \p i(<Esc>ea)<Esc> :map \c i{<Esc>ea}<Esc>你需要在敲入\后,立即敲入p,以便 Vim 知道它們組成一個(gè)命令。":map" 命令(無(wú)參數(shù))列出當(dāng)前已定義的映射,至少會(huì)包括普通模式下的那些。更多的內(nèi)容參見(jiàn) |40.1|。==============================================================================*05.4* 增加插件 *add-plugin* *plugin*Vim 可以通過(guò)插件增強(qiáng)功能。插件其實(shí)是一個(gè)當(dāng) Vim 啟動(dòng)的時(shí)候能被自動(dòng)執(zhí)行的腳本。簡(jiǎn)單地把插件放到你 Vim 的 plugin 目錄中就可以使它生效。(這個(gè)功能在 |+eval| 被編譯進(jìn) Vim 中時(shí)才有效)Vim 中有兩種插件: 全局插件:用于所有類(lèi)型的文件 文件類(lèi)型插件:僅用于特定類(lèi)型的文件我們將先討論全局插件,然后涉及文件類(lèi)型插件 |add-filetype-plugin|。全 局 插 件 *standard-plugin*當(dāng)你啟動(dòng) Vim,它會(huì)自動(dòng)加載一些插件。你不需要為此做任何事。這些插件增加一些很多人想用的,但由 Vim 腳本實(shí)現(xiàn)而非編譯進(jìn) Vim 中的功能。你可以在幫助索引中找到這些插件:|standard-plugin-list|。還可以參照 |load-plugin|。 *add-global-plugin*你可以加入一個(gè)全局插件使得某些功能在你每次使用 Vim 時(shí)都被開(kāi)啟。添加一個(gè)全局插件只要兩步:1. 獲得一個(gè)插件的拷貝2. 把它塞進(jìn)合適的目錄獲 得 一 個(gè) 全 局 插 件在什么地方可以找到插件?- 有一些與 Vim 一起發(fā)布,你可以在 $VIMRUNTIME/macros 目錄或其子目錄中找到。- 從網(wǎng)上下載,查一下這個(gè)地方:http://vim.sf.net。- 在 Vim 的郵件列表中找:|maillist|。- 自己寫(xiě)一個(gè),參見(jiàn)|write-plugin|。使 用 一 個(gè) 全 局 插 件首先閱讀插件包括的說(shuō)明文字,看看有沒(méi)有什么特殊的限制。然后拷貝到你的插件目錄: 系統(tǒng) 插件目錄 ~
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -