[英]How to use vim autowrap correctly?
我正在嘗試使用vim自動換行功能在輸入時自動將段落自動換行成不超過80個字母的實時行。 可以通過set textwidth=80
並set fo+=a
。 vim formatoptions
或fo
的a
選項基本上告訴vim在鍵入時包裝整個段落。
但是,有一個非常煩人的副作用,就是我再也不能通過按回車鍵來換行。
這是一個例句。
說出以上句子,如果我想寫成:
這是
一個例句。
通常,我可以將光標移至“ a”並進入插入模式,然后按Enter。 但是在set fo+=a
,當我在插入模式下按Enter在“ a”時什么也不會發生。 我注意到的一件事是,如果“ is”和“ a”之間沒有空格,請按Enter鍵將插入一個空格。 但是此后沒有其他事情發生。
那我在這里想念什么? 如何停止這種煩人的行為?
您可以運行:help fo-table
來查看選項的說明:
a Automatic formatting of paragraphs. Every time text is inserted or
deleted the paragraph will be reformatted. See |auto-format|.
When the 'c' flag is present this only happens for recognized
comments.
這意味着,每次插入字符時,vim都會嘗試自動格式化段落。 這將導致它將所有內容移回同一行。
我認為您根本不需要添加a
。 我使用neovim,但此處的行為應相同。 根據幫助頁面,默認值為:
(default: "tcqj", Vi default: "vt")
嘗試從.vimrc
完全刪除set fo+=a
。 保持set textwidth=80
。 那應該解決您的問題。
編輯 : set textwidth=80
,如果要格式化現有段落,可以在視覺選擇中突出顯示它,然后按gq
。
經過一番探索,我發現了一種可以在某種程度上解決問題的變通辦法,盡管並不完美。
基本思想是,在進入換行符時,在發送<CR>
時暫時禁用自動包裝,然后再恢復自動包裝。 有多種方法可以做到這一點。 據我所知,最好的方法是使用粘貼模式,因為進入粘貼模式時不必退出插入模式。 因此,只需在插入模式下將以下命令放入您喜歡的任何鍵綁定中即可。 我現在使用的是inoremap <CN> <F2><CR><F2>
我之所以認為這不是最佳選擇的原因是,由於某種原因,我無法以這種方式綁定<Enter>
,而不得不使用另一個鍵。
如果可以通過這種方式配置<Enter>
或<CR>
,則問題將100%解決。
以下內容使我可以使用Enter鍵在將文本寬度設置為79個字符的同時開始新的一行:
set tw=79 "width of document
set fo=cqt
set wm=0 "# margin from right window border
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.