怎麼設定 group
使用中的 groups 會存在 cycle_groups 這個變數,可以用 :echo string(g:cycle_groups)
查看;
但是這東西比較繁瑣,所以不建議直接修改它的值。
比較好的方式是在 .vimrc 定義 g:cycle_default_groups
這個變數,
cycle.vim 啟動時會自動解析它,把需要的 group 都建好。
具體例子如下:
let g:cycle_default_groups = [
\ [['true', 'false']],
\ [['yes', 'no']],
\ [['on', 'off']],
\ [['+', '-']],
\ [['>', '<']],
\ [['"', "'"]],
\ [['==', '!=']],
\ [['0', '1']],
\ [['and', 'or']],
\ [['in', 'out']],
\ [['up', 'down']],
\ [['min', 'max']],
\ [['get', 'set']],
\ [['add', 'remove']],
\ [['to', 'from']],
\ [['read', 'write']],
\ [['save', 'load', 'restore']],
\ [['next', 'previous', 'prev']],
\ [['only', 'except']],
\ [['without', 'with']],
\ [['exclude', 'include']],
\ [['width', 'height']],
\ [['asc', 'desc']],
\ [['是', '否']],
\ [['上', '下']],
\ [['男', '女']],
\ [['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
\ 'Friday', 'Saturday'], ['hard_case', {'name': 'Days'}]],
\ [['{:}', '[:]', '(:)'], 'sub_pairs'],
\ [['(:)', '「:」', '『:』'], 'sub_pairs'],
\ ]
可以只為特定檔案類型設 group 嗎
cycle_groups 可以分成 global 和 buffer 兩個 scope(作用範圍)的版本,分別是 g:cycle_groups 和 b:cycle_groups 兩個變數。
搜尋的時候會以 buffer 版為優先,你可以讓 "get" 在 html 類型的 buffer 中轉為 "post",在其他類型 buffer 中則轉為 "set"。
設定方式是在 .vimrc 定義 g:cycle_default_groups_for_{filetype},其中 {filetype} 表示想生效的檔案類型。
例如 html 專用的設定是:
let g:cycle_default_groups_for_html = [ ...(後略)
註:可以用 :echo string(b:cycle_groups)
檢查設定。
調整 group 行為
Group 的行為可以用 options 微調。目前(version 0.1.0)支援的選項如下:
-
name
名稱,目前沒什麼用,只有處理衝突時(在多個 group 都有搜尋到目標字時)會顯示一下。
-
match_case
搜尋候選字時,大小寫預設是不計的,所以 True、true 和 trUe 都會被 cycle,只要設定其中一個即可。
反之若要限制大小寫相符才 cycle,就要設定這個選項。
-
hard_case
預設情形會保留關鍵字的大小寫位置,也就是 true/false 互換時,True 會變成 False、tRUe 會變成 fALse。
這個選項可以停用此功能,互換時「若設定中是寫 fAlse,就一律換成 fAlse」。
-
sub_tag
如果開啟這個選項,cycle.vim 會搜尋成對的 xml 開啟/結束標籤,有的話就一起 cycle 掉。
例如 <EM>example</EM>
可以變成 <STRONG>example</STRONG>
。
-
sub_paris
這個比較特別,它是 sub_pair、end_with 和 begin_with 三個選項的簡易寫法,具體請看 doc。(建議用 sub_pairs 即可)
以 [['(:)', '「:」'], 'sub_pairs']
為例,
各個 item 會由 ":" 拆開,
(:) 會拆成 ( 和 ),
「:」 會拆成 「 和 」。
cycle.vim 處理 "(" 時,會搜尋成對的 ")",若有的話就一起 cycle,
例如 (請保密)
可以變成 「請保密」
。
具體要怎麼設定選項(options)
設定 group 時,每個 group 的第一個參數是 items,之後就都是 options 了。
支援以下各種型式:
-
[['true', 'false']]
- 沒有 options
-
[['true', 'false'], {'match_case': 1}]
- 以 hash 型式指定 options
-
[['true', 'false'], 'match_case']
- options 可以是字串,cycle.vim 會把它轉成 hash,hash 的預設值依各個 option 而不同,此處 'match_case' 的預設值為 1
-
[['true', 'false'], 'match_case', {'name': 'BOOL', 'sub_tag': 1}, 'hard_case']
- 字串和 hash 混著用也沒關係
你說完了沒
這篇應可滿足一般使用,我自己用到的也差不多這樣了。
在 doc 裡一些比較深入、低階的操作也有介紹,需要的話可以參考看看。