1行の文字と2行の文字を収集します。

1行の文字と2行の文字を収集します。

2行あります。下記のエディタ

3  àáâ
4  aaa

これら2行に基づいて、次のような結果を得たいと思います。

'à' => 'a',
'á' => 'a',
'â' => 'a',

どんなアイデアがありますか?

答え1

繰り返し操作を実行する必要がある場合は、マクロを記録できます。

たとえば、ここでは

qajxkphi'Escla' => 'Escla',Enter Escq

説明する:

  • qa: マクロ記録開始a
  • jxkp:1行下に移動、文字を消去してコピー、上に移動、印刷
  • hi'Esc:左に1つを挿入し'て通常モードに戻ります。
  • la' => ',Esc:右に移動して現在の文字に追加し、通常' => 'モードに戻ります。
  • la'EnterEsc :右に追加し',て改行してから通常モードに戻ります。
  • q: 録音を停止

マクロを使用して機能していることを確認するには、最初の文字の上に自分自身を置き、を押します@a。結果:

'à' => 'a',
áâ
aa

あなたは2行目にあります。2@aマクロを実行して次を取得するには、ダブルクリックします。

'à' => 'a',
'á' => 'a',
'â' => 'a',

答え2

次の3つのmappingをファイルに入れて、編集したい~/.exrc場所vi|vim|gvimにファイルをロードします。変換したい行の任意の場所にカーソルを移動して残りのQ操作を実行するには、モードの下のキーを押すだけです。注:文字通りの意味ではありませんが、次のキーの組み合わせを押すとファイルに挿入されます。ESCvirecursive macro^M<Ctrl><V> <Ctrl><M>

:map q :s/./&\r/^M
:map v :s/\(.\) \(.\)/'\1' => '\2',/^M
:map Q :/^^M-q+q-dd-P-Jv+Q

関連情報