2011-05-01 85 views
62

this epic question一些用戶放在.vimrc如下:在.vimrc中,`set nocompatible`完全無用嗎?

" Necesary for lots of cool vim things 
set nocompatible 

這是不是真的有必要嗎?從文檔:

'compatible' 'cp' 
    boolean (default on, off when a |vimrc| or |gvimrc| file is found) 

如果set nocompatible.vimrc是怎麼回事,這意味着一個.vimrc文件存在,似乎使得它毫無意義。

+0

看起來像是...... – luqui 2011-05-01 00:36:43

+0

不能:它修復了插入模式和我的rhel5盒上的刪除鍵的幾個錯誤 – Stephan 2014-09-02 19:33:46

回答

49

如果它是系統範圍的vimrc,則此選項不會關閉。所以,如果你正在改變系統級的vimrc並且你想要它,你需要設置它。

從文檔部分*compatible-default*(重點煤礦):

如果Vim啓動時, '兼容' 選項是打開的。當Vim開始初始化時,將使用這個參數。但 只要一個用戶的vimrc文件被發現, 或當前 目錄一個配置文件,實際上還是 環境變量設置了「VIMINIT」,它會 被設置爲「nocompatible」可以。

另一個區別是明確設置與'-C flag'調用vim的'不兼容'的推翻。

在任何其他情況下,是的,在您的vimrc中設置'nocompatible'是一個noop。

最後,我認爲這只是一個「比對不起更安全」的問題。

+3

+1再次,整個世界*不是錯誤的。 :\ – ClosureCowboy 2011-05-01 00:52:07

+1

該死的,無法直接鏈接到'-C'標誌。至少在我的瀏覽器(Chrome 10,Windows 7)上,它會跳轉到'-c'標誌。所以,我將鏈接到上面的'-D'。 :( – 2011-05-01 00:58:42

+0

':在.vimrc中設置nocompatible'似乎改變了一些設置,例如它意味着':set noshowcmd'。我不知道爲什麼。 – 2016-03-03 09:03:13

5

我在Windows虛擬機上使用Cygwin中的vim,並且每次進入插入模式時,按方向鍵都會導致vim在屏幕上打印「A」,「B」,「C」或「D」的滾動。我發現一個論壇說,把vim放在不兼容的模式會解決它。謝天謝地,它的確如此。

我在我的〜/ .vimrc文件中放置了「set nocompatible」,問題依然存在。所以也許它不是100%無用的。

+6

你不需要在'〜/中加入任何東西。 vimrc'。該文件的絕對存在將把vim放入* nocompatible *模式,試試它,備份當前的.vimrc'mv〜/ .vimrc〜/ .vimrc.bak'並創建一個空的'touch〜/ .vimrc '現在打開vim,看看會發生什麼 – 2013-11-07 10:41:24

+6

呵呵,副作用,我們怎麼珍惜你 – Dan 2014-03-04 18:57:37

+0

@JohnnyBaloney嗯,我可以告訴你「在Ubuntu上發生了什麼」,retsigam說的對於這個發行版也是如此:沒有'set nocompatible',vi是一個使用光標鍵導航的噩夢,當我試過你的測試用例時,我立即再次用那個空的.vimrc做了同樣的噩夢,但是你一直都是正確的:-) __See extra answer__ about my my最近的發現。 – syntaxerror 2016-01-23 00:07:27

14

很多人在GitHub上共享他們的.vimrc文件,我有時會在不替換我的.vimrc文件的情況下測試設置。 vim允許我用-u標誌來做到這一點。

vim -u test_vimrc 

從VIM 「:幫助不兼容」

(注:這不會發生在系統範圍的vimrc和gvimrc文件, 也不是爲給定文件| -u |論據)。

這意味着,如果你和別人分享自己的.vimrc和他們使用-u標誌來加載文件,Vim不會配置一樣,如果文件被命名爲.vimrc裏和在你的home目錄。

+3

這是非常重要的一點。我最近很難學會這一點。如果您使用-u,默認情況下兼容打開。因此,vim -u〜/ .vimrc實際上與讓vim自己加載〜/ .vimrc不同 - 除非你添加「set nocompatible」。 – Dan 2014-08-07 21:32:01

+0

由於-N指定了不兼容模式,所以Vim配置文件可以加載'vim -Nu test_vimrc'。 – 2016-12-29 22:05:53

0

基於什麼約翰尼上文所指出的,我只是驚訝,當我剛剛發現這一點:

$ cat /usr/share/vim/vimrc.tiny 
" Debian system-wide default configuration Vim 
set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after 

set compatible 

哎呀!

不,我沒有想到。 Debian(或Debian Unstable aka Ubuntu)確實通過覆蓋默認設置設置兼容爲用戶帶來了噩夢。 我希望你現在知道爲什麼當你來自FreeBSD時,你首先要做的是通過把set nocompatible放到你自己的~/.vimrc中來覆蓋整個系統的設置。因爲否則,你只會產生字母,而不能像你習慣的那樣移動光標。

我認爲這是一個可怕的想法。換句話說,在Debian和Ubuntu中,這個set compatible行應該是,從vimrc.tiny中刪除,因爲它會激怒新用戶,他們不知道如何讓光標鍵工作。 這些事情迫使他們nano和其他人,因爲這些完全毫無意義的阻止者!

我真的很想和那些曾經把這種改變傳播到Debian系統資源文件的傢伙交談。也許對那些最充分承認他的改變的人也是如此。

Johnny是對的:在您的私人PC上,您可以從系統範圍的.vimrc(如果存在)中刪除所述行,然後觸摸$ HOME上的空白.vimrc。非常感謝你指出,再次減少混亂。請注意,您必須擁有~/.vimrc(即使爲空!),否則如果沒有明確將放入set nocompatible,您將無法使用遊標。

+0

'vimrc.tiny'中的註釋解釋說,只有當你將vim作爲'vi'調用時,它纔會被採用,在這種情況下,vim試圖與'vi'兼容是有意義的。當你運行'vim'時,這個文件不是來源,並且相同目錄下的相關'vimrc'文件不包含它們。所有這一切都在你找到的'vimrc.tiny'文件的註釋中解釋。 – 2017-09-28 19:11:03