2013-10-27 80 views

回答

8

正如您發現這是使用'linebreak'選項(與'wrap'上)完成的。

如果Vim會在'breakat'而不是最後一個符合屏幕的字符處換行。

而且由於'breakat'默認包含空格,製表和一些標點符號,這應該打破行預期(而不是在一個字的中間)。我建議將'breakat'重置爲Vim的默認值,以防其被插件或映射更改。

呵呵,不要設置'list',這些功能不要混用。

現在一切都在一起:

:set nolist wrap linebreak breakat&vim 
+2

所以我必須選擇可見的標籤,而不是打破軟線包裝的話?這非常不尋常和令人沮喪。 – Daniel

+1

@Daniel別抱怨我!這實際上已經在待辦事項列表很長一段時間了(':h todo')。在有人花時間實施它之前,恐怕我們不會有這個功能。 – glts

1

這取決於您是否正在談論換行符 - 在一個換行符實際插入的文本 - 或斷行,這不僅影響如何文字顯示在屏幕上。
我懷疑你是指後者。
如果這是正確的,那麼你想:set list(並可能添加set list到你的vimrc)。
此外,在單詞邊界包圍顯示(再次:只是顯示,而不是實際文本),list也會導致vim顯示各種「不可見」字符,如空格,製表符和(硬)換行符listchars變量(有關更多信息,請參見:help listchars);如果你想要在文字邊界處使用柔和的線條而不是不可見的字符,那麼可以推測將列表分類器設置爲無效。
我個人發現,我有時想要列表啓用,有時不需要。 :set nolist關閉。 :set list!切換。 (爲了完整起見,:set list?告訴你是否當前是否啓用。)這些都是標準的vim約定。
如果輸入太多,你可以在你的vimrc中設置一個自定義的鍵映射。但那是另一個問題。

+0

我實際上已經設置了列表:'set listchars = tab:> - ,trail:-'。 每當我':設置nolist'時,換行不再處於單詞的中間,這使我感到困惑。前面的回答提到兩者不兼容,但我不明白爲什麼。 – Daniel

+0

噢,對,我的壞,對不起:如果'list'是* en * abled,那麼爲了包裝顯示器而忽略字邊界。我也不明白。 – Edward