我不相信这可以直接通过 Tabular 实现。但是,您可以定义一个接受所需字符串作为参数的包装器命令:
command! -nargs=1 First exec 'Tabularize /^[^' . escape(<q-args>, '\^$.[?*~') . ']*\zs' . escape(<q-args>, '\^$.[?*~')
然后您可以使用任何字符执行First,例如:First = 和 :First |,甚至更长的字符串,例如:First || 和 :First &&。
如果这更适合您的用例,您还可以定义使用当前选择(在正常模式下,光标下的字符)作为参数的映射:
vnoremap <F3> y \| :exec 'Tabularize /^[^' . escape(getreg('"'), '\^$.[?*~') . ']*\zs' . escape(getreg('"'), '\^$.[?*~')<CR>
nnoremap <F3> yl \| :exec 'Tabularize /^[^' . escape(getreg('"'), '\^$.[?*~') . ']*\zs' . escape(getreg('"'), '\^$.[?*~')<CR>
编辑:为了允许范围,将-range 属性添加到命令定义并将<line1>(开始)和<line2>(结束)传递给Tabularize:
command! -nargs=1 -range First exec <line1> . ',' . <line2> . 'Tabularize /^[^' . escape(<q-args>, '\^$.[?*~') . ']*\zs' . escape(<q-args>, '\^$.[?*~')