我不相信这可以直接通过表格实现。但是,你可以定义一个包装命令来接受所需的字符串作为参数:
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>, '\^$.[?*~')