Vim 换行逗号分隔列表
我经常使用Vim 换行逗号分隔列表,vim,Vim,我经常使用gq$在Vim中包装一行 例如,如果我在.vimrc中将textwidth=80设置为我的唯一一行,那么 option1, option2, option3, option4, option5, option6, option7, option8, option9, option10, option11 包裹到 option1, option2, option3, option4, option5, option6, option7, option8, option9, optio
gq$
在Vim中包装一行
例如,如果我在.vimrc
中将textwidth=80设置为我的唯一一行,那么
option1, option2, option3, option4, option5, option6, option7, option8, option9, option10, option11
包裹到
option1, option2, option3, option4, option5, option6, option7, option8, option9,
option10, option11
但是,如果我想包装一个逗号分隔的列表(不带空格),这个命令不起作用,因为Vim将此行视为一个单词:
option1,option2,option3,option4,option5,option6,option7,option8,option9,option10,option11
鉴于预期输出为:
option1,option2,option3,option4,option5,option6,option7,option8,option9,
option10,option11
如何允许Vim通过在逗号上拆分一行来换行?我没有立即在
:help for table
中看到与我的案例相关的任何内容。一种方法是使用。这是最好的文本回流程序,但你必须真正喜欢摘要来消化手册。我的备忘单:
- 设置环境变量
:PARINIT
- 在my
中:vimrc
set equalprg=par\s0\72 设置格式prg=par\s0\72 功能!s:FormatPar() 让旧格式=&formatprg 让textwidth=&textwidth>0&文本宽度:72 let&formatprg='par s0'。文本宽度。(v:计数>0?'h1p'。v:计数:“”) 正规}{gq} 正规} let&formatprg=旧格式 endfunc nnoremap:安静!调用FormatPar()
它对于电子邮件、代码中的注释等非常有效。它处理上述列表也没有问题。这可能需要编写自己的
'formatexpr'
函数。Fy,比代码<> GQ$< /COD>稍微快一点做代码> GQQ。这个答案是有用的,但是我对纯VIM解决方案感兴趣,因为我的系统没有PAR(或者安装它的能力)。
export PARINIT='grTbEiq B=.,!?_A_a Q=_s>:|'
set equalprg=par\ s0\ 72
set formatprg=par\ s0\ 72
function! s:FormatPar()
let old_format = &formatprg
let textwidth = &textwidth > 0 ? &textwidth : 72
let &formatprg = 'par s0 ' . textwidth . (v:count > 0 ? 'h1p' . v:count : '')
normal }{gq}
normal }
let &formatprg = old_format
endfunc
nnoremap <silent> <F2> :<C-u>silent! call <SID>FormatPar()<CR>