1

だから私はここの指示に従いました: http://vimcasts.org/episodes/bubbling-text/

アイデアは、ビジュアル モードに入り、数行のテキストを選択することです。次に、CTRL-k または CTRL-j を押して、選択したテキストをファイル内で上下に移動します。私の .vimrc ファイルのマッピングは次のとおりです。

nmap <C-k> ddkP
nmap <C-j> ddp
vmap <C-k> xkP`[V`]
vmap <C-j> xp`[V`]

最初の 2 つのマッピングは通常モード ( nmap) 用であり、期待どおりに機能します。下に移動する場合、コマンドddは行を削除し、pコマンドはカーソルを下に移動して行を挿入します。dd上に移動する場合、コマンドは行を削除し、コマンドkはカーソルを 1 行上に移動してから、コマンドはそのP上に行を挿入します。

ただし、ビジュアル モードでは機能しません。選択したテキストを数行下に移動する場合を考えてみましょう。テキストが選択されると、xコマンドはそれを削除します。ただし、このpコマンドは、カーソルがある場所にテキストを正確に挿入します。したがって、次の内容のファイルがあるとします。

one
two
three

カーソルは1つの「o」にあります。ヒットvj$して最初の 2 行を選択します。次に、ヒットxしてそれらを削除します。p次に、それらを下に挿入するためにヒットしました。結果は次のようになります。

tone
two
hree

をヒットする直前にp、ファイルに 1 行があり、カーソルは「3」の「t」に置かれています。だから、その振る舞いは私にとって理にかなっています。私が理解できないのは、VimCast の専門家のチュートリアルで、私が異なる動作を期待している理由です。また、私は私が望む振る舞いを得たいと思っています。

4

1 に答える 1

3

これらのマッピングは完全に機能します。

<C-j>ビジュアル モード マッピングを使用すると、次のようになります。

  • x削除行のすぐ下の行にカーソルを置く視覚的な選択を削除します。

  • p削除された行を現在の行の下に置きます。これは意図した効果です。

  • `[変更されたテキストの最初の文字にカーソルを移動します。ここでは、移動した行の最初の文字です。

  • V視線選択開始

  • `]移動したテキストの最後の文字に向かって選択範囲を拡張し、さらに移動できるようにします。

あなたの説明から、あなたの問題は2つあると思います:

  1. マッピング自体ではなく、マッピングの右側で一連のコマンドを使用しているようです。

  2. (visual-line mode, capital , line-wise) の代わりにv(visual mode, lowercase v, character-wise) を使用しています。これらのマッピングの目的は、言葉ではなく行を「泡立てる」ことです。そのため、本当に目的の効果が必要な場合は、適切なビジュアル モードを使用する必要があります。Vv

コマンドの正しい順序は次のとおりです。

Vj<C-j>

または、Drew Neil のマッピングを使用しないことを主張する場合:

Vjxp`[V`]
于 2012-10-24T19:30:25.007 に答える