3

ブロックモードでの編集を簡素化するために、html 属性間のスペースを定期的に埋めたいと思います。

例:

<p><input type="a" name="a" value="foo a"></p>
<p><input type="ab" name="ab" value="ab bar"></p>
<p><input type="abc" name="abc" value="baz abc"></p>

ビジュアル ブロック モードで 3 つの入力を選択し、いくつかの魔法を実行します。

出力:

<p><input type="a"   name="a"   value="foo a"  ></p>
<p><input type="ab"  name="ab"  value="ab bar" ></p>
<p><input type="abc" name="abc" value="baz abc"></p>

(できれば、値の間のスペースを埋めないでください。)

それ、どうやったら出来るの?

編集:また、(編集後に)戻る方法もいいでしょう。

4

4 に答える 4

2

これは、Align プラグインを使用して行うことができます。

:AlignCtrl mIp1P0=l
:Align \i\+=

またはそれを使用してマッピングを構築します。

map <unique> <SID>WS    <Plug>AlignMapsWrapperStart
nmap <unique> <SID>WE   <Plug>AlignMapsWrapperEnd
map <silent> <script> <Leader>aa <SID>WS:AlignCtrl mIp1P0=l<CR><CR>:'a,'zAlign \i\+\s*=<CR><SID>WE

Tabularize と呼ばれる Align の代替手段もあります。

于 2012-07-26T07:30:56.960 に答える
1

そのために外部ツールを使用できます。私は C/C++ コーディングに astyle を使用して、自動化するために ~/.vimrc ファイルに次を挿入しました。

if filereadable("/usr/bin/astyle")
    silent! %!astyle
endif

必要に応じてTidyを検索できます。

Obs.: With :%! すべてのコードを外部ツールに渡す "!、特定の選択には '<,'>! を使用する必要があります。

これで、このコマンドにショートカットをマップできます。

于 2012-07-25T17:33:43.207 に答える
0

ブロックモードでどのような編集を行っていますか?おそらくもっと簡単な編集方法があります。

次に例を示します。

type = "*"の削除:

  • ブロックを線方向に視覚的に選択します(つまりV})
  • タイプ:norm WdW

説明:

  • 視覚的に選択して:と入力すると、コマンドラインに:'<、'>が表示されます。これは、選択だけで次のコマンドを実行することを意味します
  • :normは、通常モードで次の文字を解釈することを意味します
  • Wは次の単語の先頭にジャンプします
  • dWは次の単語の先頭まで削除します

読みやすさのために好まれた特定のケース(通常は眉をひそめている)について、あなたが一度説明したように単語を揃える必要がありました。私は仕事を成し遂げるために簡単なハックをすることになった。あなたの場合、それは次のようになります:

  • (ブロックを選択)
  • :'<、'> s / / / g
  • (「入力」の後の最初のスペースに移動します)
  • (右下の列番号(10)に注意してください)
  • gv(ブロックの再選択)
  • :norm 10ldw(削除
  • (「abc」の後の最初のスペースに移動します(これはこの列の最長値であるため))
  • (列番号(21)に注意してください)
  • :norm 21ldw

... 等々

列を削除するだけの場合は、1つのスペースを多数に変換し、両側にいくつかの空のスペースを含む列をブロック選択し、削除して、多数のスペースを1つに戻すことができます。

前に述べたように、この方法は非常に壊れやすく、スペースが列の区切りにのみ使用されている場合にのみ可能です。ブロックで:normを使用する代わりに、マクロを作成したり、検索と置換を使用して編集タスクを実行したりすることも検討できます。

于 2012-07-25T17:46:33.063 に答える
0

属性間にスペースが 1 つしかない場合は、次のようにすることができます。

 :s/"\s/"\t/g

詳細はこちらでご覧いただけます。

于 2012-07-25T17:47:30.093 に答える