Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 换行逗号分隔列表_Vim - Fatal编程技术网

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()
    
这样,F2将重新格式化当前段落,并将其与计数一起使用,添加挂起缩进(即4F2将段落的挂起缩进格式化为4)


它对于电子邮件、代码中的注释等非常有效。它处理上述列表也没有问题。

这可能需要编写自己的
'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>