formatoptions 設定問題。

175 views
Skip to first unread message

沙華

unread,
Apr 24, 2012, 11:12:41 AM4/24/12
to vim-t...@googlegroups.com
之前依據「 凍仁的 Ubuntu 筆記: vimrc → vimrc.d - Vim 多環境檔配置」這篇將

set fo+=m
 
設定到了 ~/.vim/vimrc.d/10_general.vim 中,但開啟時以

 verbose set fo?
 
檢視發現 雖然最近設定 'fo' 的是 ~/.vim/vimrc.d/10_general.vim,但 'm' 並沒有被加入其中。
但如果我把

set fo+= m

寫在 ~/.vimrc 中,那麼 vim 就會正確的設定。我對這樣的差異 感到很好奇,有人對有心得嗎?
因為我比較偏好寫在 10_general.vim 中。

# 其中一種解決方法是「Vim: `set formatoptions` being lost? - Stack Overflow」提到的

 autocmd BufNewFile,BufRead * setlocal formatoptions+=m

但是我想知道有沒有什麼其他方法可以解決這問題。

bootleq

unread,
Apr 27, 2012, 10:59:55 AM4/27/12
to vim-t...@googlegroups.com
  1. 我試了你的作法,無法重現問題,我的 :verbose set fo? 輸出為:
    formatoptions=tcqm
        Last set from ~/.vim/vimrc.d/10_general.vim
    環境是 Vim 7.3 patches: 1-496

    另外你看到的輸出是什麼? 是跟 set fo& 一樣的預設值嗎。

  2. 其實那篇 autocmd 解法也不錯
    'formatoptions' 本來就可能讓 filetype 或其他 script 重設,大概免不了要動它

  3. 其實一個 .vimrc 寫完所有設定也很好
    # 設定檔應該不會太複雜,多餘的目錄結構可能反而不好編輯 或 不好理解
    # 一支 script 有一個 <SID>(指 s:a_function 裡的 s),將來若要跨 script 叫 function,還要先取它的 <SID>
    # 方便你知道寫了 xxx 行的 .vimrc

沙華於 2012年4月24日星期二UTC+8下午11時12分41秒寫道:

沙華

unread,
Apr 27, 2012, 12:15:28 PM4/27/12
to vim-t...@googlegroups.com
第一次發問,忘了附環境,抱歉。
1. Vim 7.3 patches: 1-495
:verbose set fo? 之輸出為:
formatoptions=tcq      
上次設定: ~/.vim/vimrc.d/10_general.vim

和 set fo& 一樣。

2. 目前使用上看似沒有問題,因為 m (和 B),兩個設定對非 CJK 語系的人來說是沒差。
有遇過的是系統本身的 vim.vim 和 Vimwiki 這 plugin 會更動 'fo',
不過兩者都以 set += 和 set -= 來處理( Vimwiki 大概下版會修正),
所以可能暫時沒必要用到 autocmd。

3. 目前也只簡單把 vim 的設定、 plugin 的設定、和其他程式( ranger 等)配合的設定分開來。
目前自己還不會寫設定,最多只有查詢別人設定的意義後再決定加入設定檔與否的程度。
最後自己還沒設定好 vim 就偷懶了 Orz,所以真的處理考完後會再考慮的。

# 最後一個理由除了自豪還可以做什麼? XD

bootleq

unread,
Apr 27, 2012, 9:44:44 PM4/27/12
to vim-t...@googlegroups.com
沙華於 2012年4月28日星期六UTC+8上午12時15分28秒寫道:
第一次發問,忘了附環境,抱歉。
1. Vim 7.3 patches: 1-495
:verbose set fo? 之輸出為:
formatoptions=tcq      
上次設定: ~/.vim/vimrc.d/10_general.vim

和 set fo& 一樣。
那應該是 fo 被重設回預設值了,在 10_general.vim 最後加上
set compatible
set nocompatible
就會重現問題,你也許有類似設定?

2. 目前使用上看似沒有問題,因為 m (和 B),兩個設定對非 CJK 語系的人來說是沒差。
有遇過的是系統本身的 vim.vim 和 Vimwiki 這 plugin 會更動 'fo',
不過兩者都以 set += 和 set -= 來處理( Vimwiki 大概下版會修正),
所以可能暫時沒必要用到 autocmd。
同意,而且 plugin 也該負責把更動的 'fo' 復原才對。

3. 目前也只簡單把 vim 的設定、 plugin 的設定、和其他程式( ranger 等)配合的設定分開來。
目前自己還不會寫設定,最多只有查詢別人設定的意義後再決定加入設定檔與否的程度。
最後自己還沒設定好 vim 就偷懶了 Orz,所以真的處理考完後會再考慮的。
# 最後一個理由除了自豪還可以做什麼? XD
喔我只是提一下看法, 拆成有條理的目錄也很好。
至於看行數,有時只是無聊好奇,譬如想知道誰誰誰寫了幾行……

沙華

unread,
Apr 27, 2012, 10:24:31 PM4/27/12
to vim-t...@googlegroups.com


On Saturday, April 28, 2012 9:44:44 AM UTC+8, bootleq wrote:
沙華於 2012年4月28日星期六UTC+8上午12時15分28秒寫道:
第一次發問,忘了附環境,抱歉。
1. Vim 7.3 patches: 1-495
:verbose set fo? 之輸出為:
formatoptions=tcq      
上次設定: ~/.vim/vimrc.d/10_general.vim

和 set fo& 一樣。
那應該是 fo 被重設回預設值了,在 10_general.vim 最後加上
set compatible
set nocompatible
就會重現問題,你也許有類似設定?

感謝你,看來問題是在我把 set  nocompatible 寫在 set fo 的後面,我會把這行調到最前面的。
2. 目前使用上看似沒有問題,因為 m (和 B),兩個設定對非 CJK 語系的人來說是沒差。
有遇過的是系統本身的 vim.vim 和 Vimwiki 這 plugin 會更動 'fo',
不過兩者都以 set += 和 set -= 來處理( Vimwiki 大概下版會修正),
所以可能暫時沒必要用到 autocmd。
同意,而且 plugin 也該負責把更動的 'fo' 復原才對。

3. 目前也只簡單把 vim 的設定、 plugin 的設定、和其他程式( ranger 等)配合的設定分開來。
目前自己還不會寫設定,最多只有查詢別人設定的意義後再決定加入設定檔與否的程度。
最後自己還沒設定好 vim 就偷懶了 Orz,所以真的處理考完後會再考慮的。
# 最後一個理由除了自豪還可以做什麼? XD
喔我只是提一下看法, 拆成有條理的目錄也很好。
至於看行數,有時只是無聊好奇,譬如想知道誰誰誰寫了幾行……
了解。
Reply all
Reply to author
Forward
0 new messages