2012-06-24 10 views
53

ビジュアル選択の開始または終了に移動する動きはありますか?私はoを知っていますが、ビジュアルモードでは2つの間が交互になりますが、開始を正確に選択できる必要があります。全体的な目標は、視覚的に選択された領域を括弧で囲むことです。ビジュアル選択の開始/終了にジャンプするには?


コメントに基づいて、次のマクロを使用して実装できました。挿入モード

  • を終了するには閉じる括弧
  • <ESC>を追加するために、以前の視覚的な選択
  • a)の末尾に移動するには、ビジュアルモード
  • `<を終了し

    1. <ESC>:アイデアがにあります`<前の視覚選択の開始に移動する
    2. i(オープニングを挿入する括弧
    3. <ESC>再び挿入モードを終了します。例えば

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

    別のコメントをもとに、私たちも、より簡潔なソリューション、

    map \q c()<ESC>P 
    
  • +0

    Typo:number 2は ''> 'でなければなりません – JJoao

    答えて

    9

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

    cハンゲ視覚的に選択した領域と背中中央にP UTそれを。

    :vmap \q c()<ESC>P 
    
    このアプローチはまた、視覚的な矩形領域で動作

    <C-V>)::私は新しいの.vimrcビジュアルモードコマンド(例えば "\ Q")ものとを定義することをお勧め= c()<ESC>P

    それ プット」各ブロックラインの周りに ""( "")を付けてください

    +1

    閉じるが、それほどではない。視覚的選択の最後の文字が行の最後の文字の場合、カーソルは視覚的選択に先行する文字の上を移動します。したがって、insert( "i")を使用すると、括弧で囲まれたテキストが意図したよりも1文字左に挿入されます。 – duckworthd

    +0

    @duckworthd、私の悪い - あなたは完全に正しいです。私の更新を見てください... – JJoao

    70

    を持っているの位置を保存する2つの関連内蔵のマークがあります。現在のバッファ内の最後のビジュアル選択の最初の文字と最後の文字を返します。 これらのマークが指しているところにカーソルを移動するには、それぞれ コマンド`<`>を使用します。 (:help `>:help `<を参照してください。)

    +4

    これはまさに私が探していた答えです。 @duckworthd - 受け入れる:-)をクリックすることを検討する必要があります –

    +0

    しかし、どのように選択を同じに保ちますか? – Adrian

    +17

    @Adrian:あなたはビジュアルモードを離れずにいますか?もしそうなら、あなたは 'o'コマンドを使うことができます。 –

    19

    をあなただけすでにすなわちsurroundと呼ばれるthis pluginを書いたティム法王によって、そこで行われて仕事している視覚的な選択を囲むようにしたい場合。あなたの好きな区切り文字で単語や視覚的な選択を囲みます。

    あなたの視覚的な選択を選択し、i like vim[i like vim]タイプcs](変化する周囲)に変更し、最後にi like vimを取得するためにds]を削除するには、(i like vim)を取得するために(i like vim)またはS(を取得するためにS)を打つと言います。

    10

    あなたはSurrond.vimを使用できない場合は、ここでそれを行うための一つの方法は次のとおりです。

    1. vまたはVであなたの視覚的な選択を行います。
    2. <Esc>で出てください。
    3. タイプ`>a)<Esc>の後ろに、末尾の文字であるの後にかっこを挿入します。
    4. タイプ`<i(<Esc>開いたかっこをの前に挿入します。の前に、選択の最初の文字を挿入します。
    34

    Visual Selectionにいる間、oをクリックしてください。カーソルの位置が選択の他の端に変わります。その後、Oに戻る。