最近、共通の文字 (通常は ) に従って同様のコード行をフォーマットするより高速な方法が必要でした=
。たとえば、これをフォーマットしたい:
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>
それらを使用するには、次の手順を実行する必要があります(,
が私のものであると仮定します<Leader>
):
=
記号の前に長いテキストがある行にカーソルを置きます(提供されている例の 3 行目myYetLongerVar
) 。- 押す:
,gm
- フォーマットしたい行ごとに、そこにカーソルを置いて押します
,g=
これは機能しますが、プロセスは少し遅いです。選択した領域全体を一度にフォーマットする関数を作成したいと考えています。次に、関数のマップを 1 つ作成するだけです。
何か案は?