私はこのようなことをしたい: テキストの一部を選択してから Ctrl-B を押すと、選択したテキストが ** またはその他の選択した記号で囲まれます。何らかの方法で選択範囲の開始位置と終了位置をマークできれば、Ctrl-B をこれらのマークの上を移動して必要なテキストを配置するビジュアル モードのキーの組み合わせにマッピングできると考えていました。
どうすればそうできますか?
私はこのようなことをしたい: テキストの一部を選択してから Ctrl-B を押すと、選択したテキストが ** またはその他の選択した記号で囲まれます。何らかの方法で選択範囲の開始位置と終了位置をマークできれば、Ctrl-B をこれらのマークの上を移動して必要なテキストを配置するビジュアル モードのキーの組み合わせにマッピングできると考えていました。
どうすればそうできますか?
独自のマッピングを定義する必要はありません。Tim Pope の Surround.vimは、この種のもののために作られています! このプラグインは、周囲のテキストを簡単に削除、変更、および追加するためのマッピングを提供します。
あなたの場合、ビジュアル モードで選択を行った後S*、 と入力するだけで、コードがアスタリスクで囲まれます。
サラウンド コマンドは、標準のモーションだけでなく、通常モードでも機能します。周囲の文字を変更したい場合 (たとえば、 から*
に'
)、 を実行できますcs*'。
READMEは、試す価値のある多くの一般的な使用例をカバーしています。
ビジュアル選択の開始と終了は、それぞれ'<
との'>
マークで自動的にマークされます。これらは、別の視覚的な選択が行われるまで持続するため、関数やマッピングでのナビゲーションに使用することができます。
ただし、@Davidが言ったように、サラウンドプラグインはあなたが説明したとおりのことをしているようです.
VIM チュートリアルを進めると、Visual-Mode について次のように表示されます。
視覚的に選択されたテキストに ' を挿入する例。
次のコマンドを設定します
:vnoremap qq <Esc>`>a'<Esc>`<i'<Esc>
その後、視覚的に選択して「qq」を押します