Vim 的哲學(三)

若是沒有挑戰,人生將多麼無趣!html

兩種副本

在個人硬盤上老是保留着(至少)兩份 Vim 的配置文件。其中一份是所謂「徹底正式版」,它的文件名是 .vimrc,到本系列結束的時候,咱們將瞭解其中絕大部分的內容,而且它的內容也是會隨時更新的(根據使用者的偏好和須要)。而另一份則是被我稱之爲「基礎練習版」,它的文件名是 .vimrc.basic,其內容就是本文將要一一介紹的內容。git

不過在開始介紹具體內容以前我有必要解釋一下我爲何保留兩份配置文件,以及我如何使用它們。程序員

我認爲,只有在不依賴插件以及本身不瞭解的配置的前提下還可以毫無障礙的使用 Vim,而且在任什麼時候候都能以多種方式高效率的操做,纔算是真的會用 Vim。插件、鍵位映射、技巧性的配置等等都是錦上添花,它們有助於你進一步提升效率以及個性化你的工做環境,可是對於 Vim 哲學的理解幫助甚少。github

還有一個緣由是,我常常不得不面對不少沒有配置的基礎環境,好比新安裝的服務器等。此時沒有我慣用的環境和配置幫助我,我不想讓本身感受到束手束腳,我但願我能夠不須要依賴插件和高級配置就能流暢高效的工做。shell

.vimrc.basic 的存在就是出於以上的緣由,它只有不多的一些配置項,而且不會更改 Vim 的一切默認操做行爲;它打開了一些基礎的交互反饋,關閉了缺省存在的一些惱人的設置,使得 Vim 的行爲更加友好。這些設置的基礎來自 Vim Golf,它的口號頗有意思:編程

Real Vim ninjas count every keystroke - do you?
「真的 Vim 忍者計算每一次敲鍵-你呢?」vim

Vim Golf 是這麼玩的:每個用戶能夠提交本身的挑戰,挑戰的內容就是要求參賽者使用 Vim 完成指定的操做,操做所使用的敲鍵次數越少,排名就越高。固然爲了保證公平,每一位參賽者都須要使用一份如出一轍的配置文件,因而Vim Golf 爲你們提供了這樣一份文件。此時此刻我並非要讓你去參加 Vim Golf 的挑戰,只是這些挑戰的內容和參與條件都體現着我想要表達的 Vim 的哲學,即「保持簡單」,我認爲 Vim Golf 提供的這個基礎配置很是有助於每一位 Vim 用戶真正的掌握 Vim 操做的精髓。不過,我在本文裏介紹的配置並不是和和 Vim Golf 提供的配置如出一轍,由於我使用它們的目標不是爲了參賽,而是爲了鍛鍊本身。實際上,我還有一份專門用來參加 Vim Golf 挑戰的配置文件,叫作 .vimrc.golfsegmentfault

在平常的工做當中,我常常切換到這個配置環境下,離開全部的插件、鍵位映射、宏等輔助手段,只使用 Vim 自身提供的操做來幹活。這是一種挑戰,我樂在其中,而且在這個過程我受益不淺。我喜歡把這兩套配置看作是兩種難度的副本,普通副本只是爲了我完成平常任務,因此它要儘量簡化、高效,下降個人操做難度。而精英副本則是爲了鍛鍊個人操做,因此它拋棄一切輔助手段,提升「戰鬥」的難度,固然收穫的經驗值也是槓槓的。插件或其餘輔助手段能夠幫助你簡化不少事情,可是沒了它們以後你是否還有辦法準確高效的完成它們呢?只有在這樣的環境下,你纔會意識到這些狀況,從而迫使你去學習和練習,去尋找答案,不斷地強化你自身的能力,逐步達到高手的境界。瀏覽器

你沒必要照搬個人方法來鍛鍊本身,不過不管怎樣你至少也得有一份 .vimrc 吧?因此不管你是否喜歡我這樣的鍛鍊方法,這份基礎文件都應該成爲你的 .vimrc 配置文件的基石。許多人拼拼湊湊出各類各樣的 .vimrc,但他們中的絕大多數都不會從無到有本身寫出一份漂亮的配置文件來。緣由在於 Vim 的配置多如牛毛,罕有人樂意把它們一一吃透,因此集衆家之所長炮製一份大雜燴也不失爲一個辦法,不過你真的不但願能徹底掌控本身的環境配置嗎?服務器

Now, Let's Go.

基礎環境配置

接下來我將帶你一行行完成一個最基礎的環境配置,此後咱們的旅程也將會以此爲起點。隨着時間的推移,你瞭解的愈來愈多,這份配置文件也將會愈來愈豐富,最終你會獲得一個接近完美的環境配置(符合你的需求),而且你能夠隨時作出相應得調整,由於你對它們已經瞭如指掌了。

在跟隨本章內容的時候,你沒必要非得使用 Vim 不可,由於咱們尚未介紹更多的操做指令。你可使用任何一種你熟悉的編輯器來編輯和保存這些基礎配置,到最後再打開 Vim 來驗證它是否生效便可。

如何獲取幫助?

在學習的過程當中,我沒有辦法作到面面俱到,滴水不漏。有時候你須要進一步的幫助,這就須要你學會查看 Vim 的幫助文檔。

Vim 內置有一套完整全面的用戶手冊和幫助文檔,我必需要說這是我見過的最棒的文檔!使用這套文檔也很簡單,只要在常規模式下輸入 :help 便可。: 將會帶你進入命令模式,這是咱們講到的第三種模式,之後咱們還會進一步瞭解它;help 是打開幫助文檔的命令。

爲了進一步幫助你方便的閱讀幫助文檔,我先簡單介紹幾條操做指令。若是你不熟悉它們沒關係,閱讀幫助文檔正好是幫助你去掌握它們的好機會。

操做指令 功能描述 附註
h 光標左移
j 光標下移
k 光標上移
l 光標右移 能夠用數字做爲前綴實現屢次移動。好比 3j 能夠向下移動三次
CTRL-U 向上翻半頁 u = upwards
CTRL-D 向下翻半頁 d = downwards
CTRL-B 向上翻半頁 b = backwards = upwards
CTRL-F 向下翻半頁 f = forwards = downwards

有這些指令打基礎,閱讀幫助文檔應該不在話下了,而且這些指令在從此的平常操做中還會常用,請藉助閱讀幫助的機會多多練習,讓它們成爲你的下意識反應。另外,你會在幫助文檔中看到一些高亮的詞組,它們是能夠跳轉到對應的章節去的,就好像網頁上的連接同樣。跳轉的方法是將光標移動到高亮處而後按下 CTRL-],以後你還能夠按 CTRL-O 返回以前的頁面(能夠連續返回多級),或者用 CTRL-I 前進至剛纔返回過的頁面,就好像瀏覽器上的「後退」和「前進」按鈕(對應的按鍵還有一對:CTRL-T<TAB>)。另外,你能夠輸入 :ju[mps] 打開一個跳轉歷史列表,看到都有哪些位置可供跳轉。

你是否注意到 :ju[mps] 這個古怪的寫法?它的意思是 jumps 是一個命令的全稱,可是在輸入命令時可使用其簡寫部分,也就是在 [] 以外的部分。所以在這個例子裏,輸入 :jumps 和 輸入 :ju 是等價的。你應該瞭解這個細節,由於在幫助文檔裏會不斷地出現,記住那些經常使用的簡寫會幫助你在平時提升效率。

另外,考慮到不少人閱讀英文有困難,如下是一些中文版 Vim 手冊的信息:

  1. 中文文檔在線閱讀版
  2. 中文文檔下載安裝版 下載安裝可讓你 Vim 裏直接查看中文文檔,可是安裝和設置對新手略有難度(安裝說明),在線版內容是同樣的。Vim Documentation in Chinese
  3. Github Fork 若是你使用插件管理器,好比 Vundle,這個會更方便。

接下來每個小標題的後面都有對應的幫助命令,你可使用上述途徑獲取更多相關知識。

compatible :help 'compatible'

Vim 是 Vi 的改進版本,它在 Vi 的基礎上作出了許多改進和加強,其中一些變化完全改變了 Vi 的特性。爲了向後兼容適應一些老 Vi 用戶的習慣,Vim 在默認狀況下沒有開啓這類變化,換句話說 Vim 默認運行在「兼容模式」(Compatible)下。然而對於現代的絕大多數用戶來講,這些改進的變化更符合人們的指望,所以咱們須要讓 Vim 運行在徹底模式下,開啓那些覆蓋了 Vi 的功能改進。你能夠在幫助文檔裏看到對於這類改進的具體描述。

另外,不少設置和插件依賴於 Vim 的這些改進,因此咱們須要在配置的最開始關閉兼容模式,所以咱們在配置文件的頂部寫下咱們的第一行:

set nocompatible

compatible 是布爾型的選項。VimScript(Vim 內置的腳本語言)在選項的前面加上 no 來表明關閉狀態(falsy),此外在後面附加 ! 表明切換狀態,即:若是當前狀態是開啓,那就關閉它,反之則開啓它。關於 VimScript,從此咱們會進一步介紹,你也能夠自行閱讀一部很是好的在線教材:Learn Vimscript the Hard Way (by Steve Losh)

t_RV :help 't_RV'

這個選項在現今絕大多數的系統及 Vim 版本下都沒有設置的必要,實際上它是一個遺留問題(Legacy Issue),對於它引發的問題及緣由的解釋將會是很是冗長及乏味的,而它之因此出如今 Vim Golf 的默認設置裏也是由於參與的人實在太普遍了,不免會有人碰到這個問題,因此你能夠無視它,不過即便加上也不會對你有什麼損失。

若是你真的好奇,那麼請看這裏:http://bugs.debian.org/608242

set t_RV=

runtimepath :help 'runtimepath'

set runtimepath=$VIMRUNTIME 會關閉用戶自定義的腳本,這也是爲了給你一個純粹的、乾淨的 Vim 環境。

你會發如今我給出的配置文件中,這一句被我註釋掉了,這是由於我是用 Vundle 來管理全部的第三方插件和腳本,所以我不須要這一句。可是若是你是手動管理的,那麼你最好加上這一句。

syntax :help syntax

syntax on 爲你開啓語法高亮。或許稱爲「詞法高亮」更加貼切,由於 Vim 並不去分析文件的語法,爲了保證快速的解析,Vim 使用特定的語法來匹配詞法規則併爲它們着色。你能夠自定義各類語言的語法高亮,無非就是根據這些規則來指定顏色罷了。

filetype :help 'filetype'

filetype on 爲你開啓文件類型檢測,這個功能過重要了,全部的語法檢測、高亮、縮進規則都依賴文件類型的識別。Vim 一般使用後綴名來識別文件的類型,可是你也能夠從新指定或者經過在文件內容中添加特定標記來覆蓋默認的檢測結果。

filetype indent :help 'filetype-indent'

filetype indent on 開啓縮進規則,在文件類型檢測生效後,可用的縮進規則將會被使用。實際上還有一個重要的 filetype plugin on,顧名思義,這是開啓對應插件的。可是還記得開始我說的話麼?這套基礎配置就是要擺脫對插件的依賴從而保持簡單,所以咱們只開啓縮進規則就夠了。

backup :help 'backup'

backup 用來控制咱們是否爲當前正在編輯的文件創建備份,在基礎配置裏咱們將備份功能關閉了。實際上我本身是打開的,由於有備而無患嘛。可是我真實的設置遠不止這麼簡單,由於 Vim 關於文件備份的設置其實很是複雜(固然也很是靈活),簡單的開啓 backup 並不必定會如你指望的那樣進行備份,而且在不少狀況下還會讓新手感到無所適從。我不想讓你被這些問題嚇跑,鑑於你在練習階段也不會用 Vim 來作一些很是重要的編輯工做,因此請你關了它。

set nobackup

visualbell & t_vb :help 'visualbell' :help 't_vb'

可視化響鈴是爲聽覺障礙人士提供可視化提示的功能,若是你不屬於這類人羣,你能夠關掉它。可是即便如此,大多數人也不想看到屏幕閃爍的提示(通常在終端下發生操做錯誤的時候,會有屏幕閃爍的提示),因此你會看到下面這個看起來互相矛盾的兩條設置,不過請你相信我,我沒寫錯。

set novisualbell
set visualbell t_vb=

ruler :help 'ruler'

在屏幕下方顯示標尺,默認狀況下它會在右邊顯示光標所在位置的行號和列號。標尺的做用很是大,多數 Vimer 都喜歡自定義標尺的信息顯示來知足本身的要求,不過這是一個很大的話題,咱們留着之後講。目前爲止,默認的標尺就已經夠用了。

set ruler

number :help 'number'

number 打開屏幕左側的行號顯示,這個對程序員比較重要。

relativenumber :help 'relativenumber'

relativenumber 能夠將行號變成相對於當前行的方式來顯示,當前行爲 0,上方是從 1 開始的正整數,下方是從 -1 開始的負整數。這有什麼用呢?它能夠幫你快速的精肯定位距離當前行的偏移數。見下圖就明白了:

number & relativenumber

看,當前行是第 27 行,若是我想去 set ruler,我就敲 14k;若是我想去 colorscheme grb256,我就敲 8j,方便吧?

「等一下!你說當前行是 0 啊,爲何上圖會顯示絕對行數呢?」

哦,那是由於我同時開啓了 numberrelativenumber,這兩個布爾型選項兩兩組合能夠產生總計四種行號設置:

  1. set nonu nornu:不顯示行號
  2. set nu nornu:顯示絕對行號
  3. set nonu rnu:顯示相對行號(當前行爲 0)
  4. set nu rnu:顯示相對行號(當前行爲絕對行號)

猜猜看,我平時喜歡哪一種組合?

showcmd :help 'showcmd'

在屏幕右下角顯示未完成的指令輸入。有時候咱們輸入的命令不是當即生效的,它會稍做等待,等候你是否輸入某種組合指令。好比說你想向下移動 7 行,當你按下 7 的時候,你會看到屏幕右下角顯示 7,此時 Vim 並不清楚你最終要作什麼,因此它在這裏提示你以前的指令而後等待你的下一步操做。

不是全部人都會注意到這裏顯示的不只僅是常規模式下的指令輸入,它還會顯示可視模式下你的選擇狀況,好比當前選擇了多少字符,多少行,或者區塊可視模式下的行數x列數。

set showcmd

showmode :help 'showmode'

在左下角顯示當前的模式名稱,沒有顯示則表明如今是常規模式。

set showmode

scrolloff :help 'scrolloff'

這個選項可讓你設定在上下移動光標時,光標的上方或下方至少會保留顯示的行數。好比說咱們設置它的值爲 5,那麼你向上或向下移動到屏幕接近邊緣還剩 5 行的時候屏幕就會開始滾動。也就是說當你滾動屏幕時,你的光標距離屏幕上下兩邊將保留至少 5 行的高度,這個設定至關有用,多多嘗試找到一個讓本身最舒服的值。

set scrolloff=3

backspace :help 'backspace'

這個選項的推薦設置是這樣的:

set backspace=indent,eol,start

indenteolstart 表明的意思是「縮進位置」,「行結束符」,「段首」。這樣設置可使得 backspace 鍵在這三個特殊的位置也能進行回刪動做。這比較符合咱們的指望,很奇怪 Vim 默認居然不容許在這些地方使用 backspace 吧?

showmatch :help 'showmatch'

打開此選項使得你在輸入成對的括號時,Vim 會幫助你跳轉並高亮一下匹配的括號(而後回到你正在輸入的位置。這個效果很人性化,你只要親自試一下就能體會到了。

set showmatch

matchtime :help 'matchtime'

雖然 showmatch 選項很是人性化,可是 Vim 默認的效果時間太長了,500ms!像我這種把行雲流水的輸入看得異常重要的人來講簡直是一種折磨。要當心的是,這個選項接受的值不是 ms 而是奇葩的 1/10 秒,好比說我想要 100ms,那麼就是:

set matchtime=1

設置爲 0 能夠禁止跳轉(高亮還在)。

hlsearch :help 'hlsearch'

打開搜索高亮模式,若搜索找到匹配項就高亮顯示全部匹配項。

set hlsearch

incsearch :help 'incsearch'

打開增量搜索模式,Vim 會即時匹配你當前輸入的內容,這樣會給你更好的搜索反饋,不過你仍是要在最後輸入 <CR>(回車)來確認你的搜索內容的。

set incsearch

ignorecase :help 'ignorecase'

搜索時忽略大小寫。不過你能夠用 \C 標識臨時開啓大小寫敏感模式,這個涉及到 Vim 的正則用法,咱們之後再講。

set ignorecase

smartcase :help 'smartcase'

此選項的開啓會讓搜索模式更加聰明。若是搜索時輸入了任何大寫字母,那麼 Vim 會進行嚴格地大小寫匹配;若是搜索時只輸入小寫並開啓了 ignorecase,那麼 Vim 就忽略大小寫匹配(因此有大寫也會找到)。

set smartcase

expandtab :help 'expandtab'

<TAB> 符號轉變爲 <SPACE>,也就是空格。這個對於現代程序員來講很是重要——誰還用 <TAB> 縮進來着?

set expandtab

smarttab :help 'smarttab'

smarttab 要和後面的 shiftwidth 配合來用,它只做用於行首位置。當 smarttab 開啓時,在行首鍵入 <TAB> 會填充 shiftwidth 設定的數值,在其餘地方則填充 tabstop 設定的數值;當 smarttab 關閉時,不管在哪裏鍵入 <TAB>,都會填充 tabstop 設定的數值。

因此,若是開啓 smarttab,而後 shiftwidthtabstop 設定不同的數值,好比一個是 8 一個是 4,那麼在行首鍵入 <TAB> 會產生 8 個字符的空白,而在其餘地方鍵入 <TAB> 則產生 4 個字符的空白。這經常用來控制 Continuation Indent 的行爲,有時也叫作 Indentation for Wrapped Lines 或者 Wrapped Line Indentation

set smarttab

autoindent :help 'autoindent'

打開自動縮進,我想這個沒有人會不開的吧?不過要注意的是縮進的效果會受 smartindent 的影響。

set autoindent

smartindent :help 'smartindent'

爲縮進行爲採用相似 C 語言的風格,主要適用於擁有塊級做用於的編程語言,不過這也不是絕對的,好比如今的 Javascript 不帶塊級做用域(ES6 就有了),可是它用大括號,因此自動縮進也表現的很好。此外還會對註釋行/塊應用恰當的縮進格式。

然而,Vim 的自動縮進實際上是至關複雜但也至關靈活的。smartindent 雖然說適用於相似於 C 語言風格的編程語言,可是對於 C 自己,Vim 還有內置一套更靈活的縮進方案。若是你常常編寫 C 程序,你應該仔細看一下::help 'cindent'

此外,爲了更好的適應各類語言的特性,Vim 也容許用戶自定義縮進表達式,詳情請見::help 'indent'

set smartindent

shiftwidth :help 'shiftwidth'

shiftwidth 實際上定義了每一次縮進對應的空格數,當你使用自動格式化(好比 gq),或者手動縮進(<<>>)時,Vim 使用的數值就是這個。

然而讓人糾結的是,若是你還想要 Continueation Indent(見上面的 smarttab),你不得不把 shiftwidth 設定爲你不想要的數字(由於 CI 一般比常規的縮進要大),可恰恰縮進步長又依賴這個,因此很難完美的實現全部的自動縮進格式設置。

不要被個人描述搞怕怕了,實際上如今不多有人在意 CI 了,多數語言的風格標準也不在 CI 的設置上作出約定,因此你儘管把 shiftwidth 設定成和 tabstop 同樣的數值好了。

set shiftwidth=2

tabstop :help 'tabstop'

tabstop 就是 <TAB> 字符所表明的空格數,通常咱們會用 expandtab<TAB> 轉變成空格符,而後鍵入 <TAB> 時就會產生 tabstop 個空格了。這是如今廣泛的作法。

set tabstop=2

softtabstop :help 'softtabstop'

softtabstop 會影響 <BS> 刪除的空格數,但不是用 <SPACE> 插入的空格,而是 <TAB> 插入的空格。因此咱們老是把 softtabstop 設定成和 tabstop 同樣的數值,這樣不管是用 <TAB> 插入縮進仍是用 <BS> 刪除縮進,其行爲老是同樣的。

可是對於使用 <SPACE> 輸入的空格,哪怕是連續輸入的若干個空格,<BS> 仍是會一個一個的刪除。

set softtabstop=2

list & listchars :help 'list' :help 'listchars'

list 開啓對於製表符(tab)、行尾空格符(trail)、行結束符(eol)等等特殊符號的回顯,有助於你觀察這些特殊符號的狀態,精確地控制文本的編輯。

這對於程序員,特別是精(吹)益(毛)求(求)精(疵)的程序員來講相當重要,若是你是,你懂的!

listchars 能讓你進一步控制想要用什麼字符來顯示這些特殊符號,若是你設定了 encodingUTF-8,那麼你可使用不少很好看的字符。順便一提,我沒有設置 encoding 是由於 Vim 能夠自動檢測系統的 locale,這一點對於 Windows 用戶多是廢的(或者應該說 Windows 是廢的……),因此請自行設置它。

set list listchars=eol:¬,tab:▸\ ,trail:.,

我給出的設置效果以下圖所示:

listchars

你能夠清楚的看到在 17,18,19 這三行故意輸入的 <TAB>trailing <SPACE> 在屏幕中留下的標記。

Keep it simple...

我秉持着保持簡單的精神爲你總結出這些最基礎也是最有用的設置,真心但願能幫助你開一個好頭。可是保持簡單可不是爲了讓你簡單的照抄了事呀,就這麼短短二十來個設置選項,我足足花了一下午把它們整理並解釋出來,而看一遍文檔也不過就是二十分鐘的功夫。因此我但願你在應用它們以前仍是看一下文檔裏的說明吧,畢竟這些設置是要一直陪着你的。

然而,另一個顧慮是擔憂你火燒眉毛的把看到的設置通通都加上,個人建議是慢慢來。由於不少設置都有反作用,儘管這些反作用實際上都在文檔裏有說明,但查找文檔是辛苦活兒,這一點我心知肚明。當一次性應用不少設置的時候,你總會有摸不着頭腦的時候,到了那時再去一個一個排查更是吃力不討好的苦差事。

我開始認真學習 Vim 並計劃寫出一個完整的屬於我本身的配置文件的時候,就沒打算盡一日之力而克盡其功。前先後後大約花費了 8 周的時間,幾乎天天騰出 10 分鐘左右來吃透一些操做和選項,設置它們,而後利用一天裏剩餘的時間儘量的聯繫它們,看看是否有奇怪的地方。而後把它們提交到版本庫進行追蹤。這其實沒有多辛苦,可是保持一個穩定的節奏,每一次都保持簡單,最終得到的成效是喜人了。比之過去用了一年半窮盡折騰最終卻一事無成,孰優孰劣我想這個結論都能很輕易的得出吧?

最後,我把完成的基礎配置代碼附在文後……而且因爲 SegmentFault 蛋疼的語法高亮不認識 Vimscript,因此我又另外附上 Gist 的地址——別複製粘貼,這是練習 Vim 的好機會,我相信你!至於最後幾行我沒有講到的設置,它們都是用來設置配色主題的,我簡要說明一下:

設置選項 功能描述 附註
background 配色主題的色系 注意,這不是什麼背景色!dark 是暗色系,light 是亮色系。
colorscheme 配色主題的名稱 grb256 是我偏心的配色主題,但不是 Vim 自帶的,因此你照抄的話必定報錯。默認自帶的主題也很少,你能夠在輸入 :colo[rscheme] 而後敲 <TAB> 自動補全而後本身試,推薦 elfloadpablo 這倆都不錯。
highlight 自定義主題高亮顏色 若是選擇主題有個別地方不盡如人意(常有的事兒),你能夠本身改寫或添加更多細節。詳情請見::help syntax

記得這些設置是可有可無的,你搞不定也沒有關係,反正之後還會講的……

還要記得即便你發現配置選項有簡寫,也不要在配置文件裏用簡寫,不然你回頭查看時總有你想不起來的時候,到時候別怪我沒有提醒你噢!(其實這是教訓T_T)

噢!我好像忘了告訴你如何保存和使用

打開、保存和退出

.vimrc 文件放置在當前用戶的根路徑下,Unix & Linux 系的系統均可以用 cd ~ 進入這個路徑。以後輸入 vim .vimrc 便可打開(若是沒有會幫你建立一個)。

在編輯的過程當中,鍵入 :w[rite] 而後回車就保存了,若是你已經創建起了初步的節奏,你不會遇到什麼問題;可是若是你老是在屏幕上看見 :w...,兄弟,你又忘記返回常規模式了吧?

若是你直接打開了 Vim,忘記了跟文件名,那麼你能夠 :w[rite] .vimrc 來建立並保存。

退出也很簡單,鍵入命令::q[uit] 便可,另外你還能夠鍵入 :wq 連保存帶退出,後者有一個對應的快捷鍵:ZZ,記住它,這是效率幫手。若是你不想保存只想退出,鍵入命令::q!,對應快捷鍵:我不告訴你,本身去查~(這不是我傲嬌,而是由於我以爲習慣這個快捷鍵很差,容易丟失修改,q! 命令雖然稍微麻煩些,但也所以給你更多反悔的時間)

我該如何使用多個 Vim 的配置文件

若是你喜歡個人雙副本練習法,那麼你將會遇到的一個問題是:Vim 老是很聰明的在打開時加載你的 ~/.vimrc 文件,該如何告知它加載另一份配置文件呢?答案很簡單:

$ vim -u ~/.vimrc.basic

你能夠把這條命令作一個 Alias,這樣會更加快捷。另外在打開 Vim 的時候能夠附加一些選項,使用 vim -h 能夠看到這些選項的說明。

還有一個值得知道的技巧,在 Vim 中鍵入 CTRL-Z 會將 Vim 臨時掛起並返回其父進程(多數狀況下就是 Terminal Shell),以後在終端裏輸入 fg 回車以後會回到 Vim。這個技巧有助於你快捷的往返於 Vim 和 終端之間。若是你不方便按 CTRL-Z(好比 Windows……),能夠用命令 :st[op]:sus[pend] 代替。


https://gist.github.com/nightire/9815652


set nocompatible                " use vim defaults
set t_RV=                       " http://bugs.debian.org/608242
" set runtimepath=$VIMRUNTIME     " turn off user scripts, https://github.com/igrigorik/vimgolf/issues/129

syntax on                       " turn syntax highlighting on by default
filetype on                     " detect type of file
filetype indent on              " load indent file for specific file type

set nobackup                    " do not keep a backup file
set novisualbell                " turn off visual bell
set visualbell t_vb=            " turn off error beep/flash

set ruler                       " show the current row and column
set number                      " show line numbers
set showcmd                     " display incomplete commands
set showmode                    " display current modes

set scrolloff=3                 " keep 3 lines when scrolling
set backspace=indent,eol,start  " make that backspace key work the way it should
set showmatch                   " jump to matches when entering parentheses
set matchtime=1                 " tenths of a second to show the matching parenthesis

set hlsearch                    " highlight searches
set incsearch                   " do incremental searching
set ignorecase                  " ignore case when searching
set smartcase                   " no ignorecase if Uppercase char present

" Default indenting options
set expandtab smarttab
set autoindent smartindent shiftround
set shiftwidth=2 softtabstop=2 tabstop=2

" Identify invisible characters and don't show them by default
set list listchars=eol:¬,tab:▸\ ,trail:.,

set background=dark
colorscheme grb256              " can not live without this two lines

" Make comments and special characters look better
highlight Comment    ctermfg=245 guifg=#8a8a8a
highlight NonText    ctermfg=240 guifg=#585858
highlight SpecialKey ctermfg=240 guifg=#585858
相關文章
相關標籤/搜索