70

視覚的選択の開始または終了に移動するためのモーションはありますか?

oビジュアルモードでは2つが交互に表示されることは知っていますが、開始点を正確に選択できる必要があります。

全体的な目標は、視覚的に選択された領域を括弧で囲むことです。


ファローアップ:

コメントに基づいて、次のマクロを使用してこれを実装することができました。アイデアは次のとおりです。

  1. Escビジュアルモードを終了します。
  2. `>前の視覚的選択の最後に移動します。
  3. a)閉じ括弧を追加します。
  4. Esc挿入モードを終了します。
  5. `<前の視覚的選択の最初に移動します。
  6. i(開き括弧を挿入します。
  7. Esc挿入モードを再度終了します。

例えば:

map \q <ESC>`>a)<ESC>`<i(<ESC>

別のコメントに基づいて、さらに簡潔な解決策があります。

map \q c()<ESC>P
4

5 に答える 5

89

There are two relevant built-in marks holding the positions of the first and last characters of the last visual selection in the current buffer. In order to move the cursor to these marks, use the commands `< and `>, respectively (see :help `> and :help `<).

于 2012-06-24T09:16:59.323 に答える
80

Visual Selectionクリックしている間o。カーソルの位置を選択範囲の反対側に変更します。その後O、ジャンプして戻ります。

于 2015-05-02T17:36:56.067 に答える
25

「視覚的に選択された領域を括弧で囲む」最も簡単な方法は次のとおりです。

c視覚的に選択した領域を中央()P吊るし、元に戻します。c()<ESC>P

.vimrcファイルに新しいビジュアルモードコマンド(例\q)を次のように定義することをお勧めします。

:vmap \q c()<ESC>P

このアプローチは、視覚的な長方形の領域(<C-V>)でも機能()ます。各ブロックラインを配置します。

于 2015-09-24T09:45:22.397 に答える
19

視覚的な選択を囲みたいだけの場合は、すでに作業が行われています。つまり、このプラグインを作成したtimpopeによってsurroundです。それはあなたの好みの区切り文字で単語や視覚的な選択を囲みます。

視覚的な選択を選択します。たとえば、i like vimヒットS)して取得(i like vim)またはS(取得し( i like vim )、これを[i like vim]タイプに変更しcs](周囲を変更)、削除して最後ds]に取得します。i like vim

于 2012-06-24T12:53:41.760 に答える
10

Surrond.vimを使用できない場合は、次の方法があります。

  1. vまたはで視覚的な選択を行いますV
  2. でそれから抜け出し<Esc>ます。
  3. 選択範囲の最後の文字の`>a)<Esc>に閉じ括弧を挿入する場合に入力します。
  4. 入力して、選択範囲の最初の文字の`<i(<Esc>に開き括弧を挿入します。
于 2012-06-24T13:55:12.317 に答える