如何改进此vim映射以格式化/对齐类似行
最近,我需要一种更快的方法来根据一个公共字符格式化类似的代码行(通常是如何改进此vim映射以格式化/对齐类似行,vim,Vim,最近,我需要一种更快的方法来根据一个公共字符格式化类似的代码行(通常是=)。例如,我想格式化以下内容: myVar = getMyVar(); myLongerVar = getMyLongerVar(); myYetLongerVar = getMyYetLongerVar(); 为此: myVar = getMyVar(); myLongerVar = getMyLongerVar(); myYetLongerVar = getMyYetLongerVar();
=
)。例如,我想格式化以下内容:
myVar = getMyVar();
myLongerVar = getMyLongerVar();
myYetLongerVar = getMyYetLongerVar();
为此:
myVar = getMyVar();
myLongerVar = getMyLongerVar();
myYetLongerVar = getMyYetLongerVar();
然后我编写了以下映射:
" query used to find the common character. In this case i'm setting it to "find the ="
let g:defformatquery = "f="
" set current line as having the longer size till the common character
nnoremap <Leader>gm 0
\:execute "normal " . g:defformatquery<CR>
\:let b:epos = getpos(".")[2]<CR>
" format current line according to the position acquired above
nnoremap <Leader>g= 0
\:execute "normal " . g:defformatquery<CR>hvgeld
\:execute "normal " . (b:epos - getpos(".")[2]) . "i "<CR>
“用于查找公共字符的查询。在本例中,我将其设置为“查找=”
设g:defformatquery=“f=”
“将当前行设置为具有更长的大小,直到公共字符
nnoremap gm 0
\:执行“正常”。g:defformatquery
\:设b:epos=getpos(“.”[2]
“根据上面获取的位置格式化当前行
nnoremap g=0
\:执行“正常”。g:defformatqueryhvgeld
\:执行“正常”。(b:epos-getpos(“.”[2])。“i”
要使用它们,我必须执行以下步骤(假设,
是我的
):
=
符号前面有较长文本的行中(提供的示例中的第三行,myYetLongerVar
),gm
,g=
=
符号对齐某些选定的行(使用v或CTRL-v选择),只需键入:
:Align =
或从第34行到第39行对齐:
:34,39Align =
你知道tablar.vim吗?@Michael也很不错!我认为这个插件解决了我的问题:)对于没有插件的小但相对通用的对齐技巧,请参阅我的问题“”。