日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转:初学者简易 .vimrc编写指南

發布時間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转:初学者简易 .vimrc编写指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:

? ? http://edyfox.codecarver.org/html/_vimrc_for_beginners.html

VIM 中可供用戶定制的選項非常非常多,作為初學者,我們沒有必要了解這么多東西。下面,滇狐簡單列出了一些最常用的配置項,大家可以根據自己的需要將這些內容添加到自己的 .vimrc 中。

1?基本設置

  • set nocp?
    該命令指定讓 VIM 工作在不兼容模式下。在 VIM 之前,出現過一個非常流行的編輯器叫 vi。VIM 許多操作與 vi 很相似,但也有許多操作與 vi 是不一樣的。如果使用“:set cp”命令打開了兼容模式開關的話,VIM 將盡可能地模仿 vi 的操作模式。?
    也許有許多人喜歡“最正統的 vi”的操作模式,對于初學者來說,vi 里許多操作是比較不方便的。?
    舉一個例子,VIM 里允許在 Insert 模式下使用方向鍵移動光標,而 vi 里在 Insert 模式下是不能移動光標的,必須使用 ESC 退回到 Normal 模式下才行。?
    再舉一個例子,vi 里使用 u 命令可以撤消一次先前的操作,再次按下 u 時,將撤消“撤消”這個動作本身,也就是我們常說的“重復”(redo)。而 VIM 里可以使用 u 命令撤消多步操作,“重復”使用的快捷鍵是 Ctrl + R。?
    使用兼容模式后,VIM 將放棄這些新的功能,盡量模仿 vi 的各種操作方式。只有在不兼容模式下,才能更好地發揮 VIM 自身的特點。Bram 爺爺強烈推薦大家使用 VIM 的不兼容模式,滇狐也是這樣推薦的。請務必在你的 .vimrc 中的第一行寫上:“set nocp”。
  • set ru?
    該命令打開 VIM 的狀態欄標尺。默認情況下,VIM 的狀態欄標尺在屏幕底部,它能即時顯示當前光標所在位置在文件中的行號、列號,以及對應的整個文件的百分比。打開標尺可以給文件的編輯工作帶來一定方便。
  • set hls?
    搜索時高亮顯示被找到的文本。該指令的功能在 vimtutor 中已經有過介紹,這里就不多說了。其實似乎許多人并不喜歡這個功能。
  • set is?
    搜索時在未完全輸入完畢要檢索的文本時就開始檢索。vimtutor 對該命令也有過介紹,滇狐并不喜歡這個功能,因此滇狐自己的配置文件里是沒有這條命令的。但是周圍有朋友很喜歡這個,因此滇狐還是將它列在這里。
  • syntax on?
    打開關鍵字上色。進行程序設計的朋友應該都知道關鍵字上色是什么東西,因此這里就不多說了。不進行程序設計的朋友不妨也打開這個功能,雖然不一定能夠用得著,但這個功能其實也是很好玩的。
  • set backspace=indent,eol,start?
    設想這樣一個情況:當前光標前面有若干字母,我們按下 i 鍵進入了 Insert 模式,然后輸入了 3 個字母,再按 5 下刪除(Backspace)。默認情況下,VIM 僅能刪除我們新輸入的 3 個字母,然后喇叭“嘟嘟”響兩聲。如果我們“set backspace=start”,則可以在刪除了新輸入的 3 個字母之后,繼續向前刪除原有的兩個字符。?
    再設想一個情況:有若干行文字,我們把光標移到中間某一行的行首,按 i 鍵進入 Insert 模式,然后按一下 Backspace。默認情況下,喇叭會“嘟”一聲,然后沒有任何動靜。如果我們“set backspace=eol”,則可以刪除前一行行末的回車,也就是說將兩行拼接起來。?
    當我們設置了自動縮進后,如果前一行縮進了一定距離,按下回車后,下一行也會保持相同的縮進。默認情況下,我們不能在 Insert 模式下直接按 Backspace 刪除行首的縮進。如果我們“set backspace=indent”,則可以開啟這一項功能。?
    上述三項功能,你可以根據自己的需要,選擇其中一種或幾種,用逗號分隔各個選項。建議把這三個選項都選上。
  • set whichwrap=b,s,<,>,[,]?
    默認情況下,在 VIM 中當光標移到一行最左邊的時候,我們繼續按左鍵,光標不能回到上一行的最右邊。同樣地,光標到了一行最右邊的時候,我們不能通過繼續按右跳到下一行的最左邊。但是,通過設置 whichwrap 我們可以對一部分按鍵開啟這項功能。如果想對某一個或幾個按鍵開啟到頭后自動折向下一行的功能,可以把需要開啟的鍵的代號寫到 whichwrap 的參數列表中,各個鍵之間使用逗號分隔。以下是 whichwrap 支持的按鍵名稱列表:
    • b?
      在 Normal 或 Visual 模式下按刪除(Backspace)鍵。
    • s?
      在 Normal 或 Visual 模式下按空格鍵。
    • h?
      在 Normal 或 Visual 模式下按 h 鍵。
    • l?
      在 Normal 或 Visual 模式下按 l 鍵。
    • <?
      在 Normal 或 Visual 模式下按左方向鍵。
    • >?
      在 Normal 或 Visual 模式下按右方向鍵。
    • ~?
      在 Normal 模式下按 ~ 鍵(翻轉當前字母大小寫)。
    • [?
      在 Insert 或 Replace 模式下按左方向鍵。
    • ]?
      在 Insert 或 Replace 模式下按右方向鍵。
  • set encoding=utf-8?
    設置當前字符編碼為 UTF-8。UTF-8 是支持字符集最多的編碼之一,在 UTF-8 下進行工作,會帶來許多方便之處。由于 VIM 在運行過程中切換 encoding 會造成許多問題,如提示信息亂碼、register 丟失等,因此強烈建議大家在啟動 VIM 的時候把 encoding 設置為 UTF-8,在編輯非 UTF-8 的文件時,通過 fileencoding 來進行轉碼。
  • set langmenu=zh_CN.UTF-8?
    使用中文菜單,并使用 UTF-8 編碼。如果沒有這句的話,在非 UTF-8 的系統,如 Windows 下,用了 UTF-8 的 encoding 后菜單會亂碼。
  • language message zh_CN.UTF-8?
    使用中文提示信息,并使用 UTF-8 編碼。如果沒有這句的話,在非 UTF-8 的系統,如 Windows 下,用了 UTF-8 的 encoding 后系統提示會亂碼。
  • set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1?
    設置編碼的自動識別。關于這條設置的詳細含義,請參看這篇文章。
  • set ambiwidth=double?
    防止特殊符號無法正常顯示。在 Unicode 中,許多來自不同語言的字符,如果字型足夠近似的話,會把它們放在同一個編碼中。但在不同編碼中,字符的寬度是不一樣的。例如中文漢語拼音中的 ā 就很寬,而歐洲語言中同樣的字符就很窄。當 VIM 工作在 Unicode 狀態時,遇到這些寬度不明的字符時,默認使用窄字符,這會導致中文的破折號“——”非常短,五角星“★”等符號只能顯示一半。因此,我們需要設置 ambiwidth=double 來解決這個問題。
  • filetype plugin indent on?
    開啟文件類型自動識別,啟用文件類型插件,啟用針對文件類型的自動縮進。

2?文本編輯設置

  • set sw=4?
    自動縮進的時候,縮進尺寸為 4 個空格。
  • set ts=4?
    Tab 寬度為 4 個字符。
  • set et?
    編輯時將所有 Tab 替換為空格。?
    該選項只在編輯時將 Tab 替換為空格,如果打開一個已經存在的文件,并不會將已有的 Tab 替換為空格。如果希望進行這樣的替換的話,可以使用這條命令“:retab”。
  • set smarttab?
    當使用 et 將 Tab 替換為空格之后,按下一個 Tab 鍵就能插入 4 個空格,但要想刪除這 4 個空格,就得按 4 下 Backspace,很不方便。設置 smarttab 之后,就可以只按一下 Backspace 就刪除 4 個空格了。
  • set spell?
    打開拼寫檢查。拼寫有錯的單詞下方會有紅色波浪線,將光標放在單詞上,按?z=?就會出現拼寫建議,按?]s?可以直接跳到下一個拼寫錯誤處。

3?斷行設置

  • set tw=78?
    設置光標超過 78 列的時候折行。
  • set lbr?
    不在單詞中間斷行。設置了這個選項后,如果一行文字非常長,無法在一行內顯示完的話,它會在單詞與單詞間的空白處斷開,盡量不會把一個單詞分成兩截放在兩個不同的行里。
  • set fo+=mB?
    打開斷行模塊對亞洲語言支持。m 表示允許在兩個漢字之間斷行,即使漢字之間沒有出現空格。B 表示將兩行合并為一行的時候,漢字與漢字之間不要補空格。該命令支持的更多的選項請參看用戶手冊。

4?C/C++ 編碼設置

  • set sm?
    顯示括號配對情況。打開這個選項后,當輸入后括號(包括小括號、中括號、大括號) 的時候,光標會跳回前括號片刻,然后跳回來,以此顯示括號的配對情況。
  • set cin?
    打開 C/C++ 風格的自動縮進。打開了自動縮進后,在編碼的時候我們可以使用“V”命令選中一段文本后,按“=”將這段文本重新調整縮進格式,在一定程度上起到代碼美化的作用。?
    另外,打開了自動縮進后,在使用 TERM 下的 vim 的時,粘貼代碼時常常會出現版式混亂的現象。那是因為 TERM 并不知道你現在正在粘貼代碼,它直接“粘貼”動作向 vim 解釋為鍵入,因此 vim 便按照設置的自動縮進格式為你的代碼調整了縮進。不幸的是,粘貼進去的代碼中本身已經包含了縮進,因此便出現了版式混亂的情況。在 gvim 中就不會出現這個問題,因為它能夠知道你現在正在粘貼。?
    知道了這個癥狀的來由,解決方案也就顯而易見了:在粘貼的時候把所有自動縮進都關閉,粘貼完畢之后再打開。一個個手工關閉自動縮進未免過于繁瑣,vim 為我們提供了一個很好用的命令,只要輸入“:set paste”,就可以關閉所有自動縮進。粘貼完畢后再輸入“:set nopaste”就可以重新打開原有的自動縮進設置了。
  • set cino=:0g0t0(sus?
    設定 C/C++ 風格自動縮進的選項,這里簡要介紹一下這段代碼里用到的選項的含義,cino 支持的選項還很多,更多選項請看用戶手冊。
// :0
//
// switch 語句之下的 case 語句縮進 0 個空格,也就是說不縮進,與 switch 塊平
// 齊,使用這樣風格:
switch?(x)
{
case?1:
????a = b;
????break;
default:
}

// g0
//
// class、struct 等之下的訪問權限控制語句,如 public、protected、private 等,
// 相對 class、struct 等所在的塊縮進 0 個空格,與 class 等塊平齊,使用這樣的
// 風格:
class?foo
{
public:
????int?a;
private:
????int?b;
};

// t0
//
// 如果函數返回值與函數名不在同一行,則返回值縮進 0 個空格,也就是說不縮進,如
// 下所示:

// set cino=t4
????int
func1()
{
}

// set cino=t0
int
func()
{
}

// (sus
//
// 當一對括號跨越多行時,其后的行縮進前面 sw 指定的距離,效果如下:
int?a = (1?+?2?+?3
????+?4?+?5?+?6
????+?7?+?8) *?9;
  • set ai?
    打開普通文件類型的自動縮進。該自動縮進不如 cindent 智能,但它可以為你編輯非 C/C++ 文件提供一定幫助。

5?其它設置

  • set selectmode=?
    不使用 selectmode。
  • set keymodel=?
    不使用“Shift + 方向鍵”選擇文本,“Shift + 方向鍵”代表向指定方向跳一個單詞。如果你喜歡這項功能的話,可以使用“set keymodel=startsel,stopsel”打開它。
  • set selection=inclusive?
    指定在選擇文本時,光標所在位置也屬于被選中的范圍。如果指定 selection=exclusive 的話,可能會出現某些文本無法被選中的情況。
  • set wildmenu?
    在命令模式下使用 Tab 自動補全的時候,將補全內容使用一個漂亮的單行菜單形式顯示出來。
  • colo torte?
    選擇 torte 配色方案。VIM 里內置了許多關鍵字上色的配色方案,另外你還可以到網上下載更多配色方案,或是自己編寫。點擊“編輯”→“調色板”,就能列出所有支持的配色方案。你可以把“調色板”子菜單剪下來,然后慢慢選擇,挑出一個你最喜歡的配色方案來。

6?圖形界面設置

  • set nowrap?
    指定不折行。如果一行太長,超過屏幕寬度,則向右邊延伸到屏幕外面。如果使用圖形界面的話,指定不折行視覺效果會好得多。
  • set mousemodel=popup?
    當右鍵單擊窗口的時候,彈出快捷菜單。
  • set guioptions+=b?
    添加水平滾動條。如果你指定了不折行,那為窗口添加一個水平滾動條就非常有必要了。
  • set guifont=Bitstream\ Vera\ Sans\ Mono\ 9?
    設置圖形界面下的字體。你可以點“編輯”→“選擇字體”,然后在對話框中選出你喜歡的字體與字號,選擇完畢后,先按幾下 ESC 確認處在 Normal 模式下,然后輸入這條命令:“:set guifont?”回車后 gvim 屏幕最下方會顯示出你當前所用的字體的名稱與字號。將獲得的結果寫到配置文件里面就可以了,需要注意一點,如果字體名稱里面含有空格的話,在抄的時候需要在所有空格前面加一個斜杠。

7?條件選擇

同一個配色方案,在 gvim 下和字符界面的 vim 下效果大相徑庭,滇狐個人的習慣是,在 gvim 下使用 torte 配色方案,在 vim 下使用 ron 配色方案。因此我們有必要針對 gvim 和 vim 進行不同的設置。

另外,前面我們在 gvim 下不使用折行,開啟水平滾動條,但在 vim 下,是沒有滾動條可用的,因此還是有必要為 vim 保留自動折行。

條件選擇設置的格式如下:

if?(has("gui_running"))
" 圖形界面下的設置
????set?nowrap
????set?guioptions+=b
????colo?torte
else
" 字符界面下的設置
????set?wrap
????colo?ron
endif

8?示例配置文件

下面給出一個滇狐推薦的初學者專用 (G)Vim 配置文件,里面沒有太多個性化的設置,方便大家進一步擴展:

set?nocp

" Tab related
set?ts=4
set?sw=4
set?smarttab
set?et
set?ambiwidth=double

" Format related
set?tw=78
set?lbr
set?fo+=mB

" Indent related
set?cin
set?ai
set?cino=:0g0t0(susj1

" Editing related
set?backspace=indent,eol,start
set?whichwrap=b,s,<,>,[,]
set?mouse=a
set?selectmode=
set?mousemodel=popup
set?keymodel=
set?selection=inclusive

" Misc
set?wildmenu
set?spell

" Encoding related
set?encoding=utf-8
set?langmenu=zh_CN.UTF-8
language?message?zh_CN.UTF-8
set?fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

" File type related
filetype?plugin?indent?on

" Display related
set?ru
set?sm
set?hls
if?(has("gui_running"))
????set?guioptions+=b
????colo?torte
????set?nowrap
else
????colo?ron
????set?wrap
endif
syntax?on

"=============================================================================
" Platform dependent settings
"=============================================================================

if?(has("win32"))

????"-------------------------------------------------------------------------
????" Win32
????"-------------------------------------------------------------------------

????if?(has("gui_running"))
????????set?guifont=Bitstream_Vera_Sans_Mono:h9:cANSI
????????set?guifontwide=NSimSun:h9:cGB2312
????endif

else

????if?(has("gui_running"))
????????set?guifont=Bitstream\ Vera\ Sans\ Mono\?9
????endif

endif

總結

以上是生活随笔為你收集整理的转:初学者简易 .vimrc编写指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。