2

最近、共通の文字 (通常は ) に従って同様のコード行をフォーマットするより高速な方法が必要でした=。たとえば、これをフォーマットしたい:

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>):

  1. =記号の前に長いテキストがある行にカーソルを置きます(提供されている例の 3 行目myYetLongerVar) 。
  2. 押す:,gm
  3. フォーマットしたい行ごとに、そこにカーソルを置いて押します,g=

これは機能しますが、プロセスは少し遅いです。選択した領域全体を一度にフォーマットする関数を作成したいと考えています。次に、関数のマップを 1 つ作成するだけです。

何か案は?

4

1 に答える 1

1

Align プラグインを試す必要があります。

たとえば、選択した行 (vまたはで選択) を記号CTRL-vに従って整列するには、次のように入力します。=

:Align =

または、34 行目から 39 行目までを整列するには:

:34,39Align =
于 2012-04-27T19:47:51.680 に答える