行末を超えて長方形に作用する方法は?


16

Vimのドキュメントには次のように書かれています。

仮想編集とは、実際の文字が存在しない場所にカーソルを配置できることを意味します。これは、タブの途中まで、または行の終わりを超えることができます。ビジュアルモードで四角形を選択し、テーブルを編集するのに便利です。

できれば、これをマイナーモードまたは組み込みの設定として実装してください。


長方形を選択するためにこれが必要ですか?その場合は、現在の開発バージョンのデフォルトです。
マラバルバ14年

いいえ、長方形をヤンク/置換するように考えています。私は長方形マークモードを使用しますが、それは素晴らしい機能ですが、私が探しているものではありません。
ナニー14年

実際、長方形をヤンク/置換するために、それは長方形マークモードの既存の機能への自然なコンパニオンになるでしょう。UIがどうあるべきかわかりません。
ステファン14年

返信ありがとう、ステファン。この機能は、長方形を扱う場合に最も役立ちます。そのため、おそらく長方形マークモードでコマンドを使用すると、モードの仮想編集タイプを切り替えることができます。現在、長方形マークモードでは、ポイントは仮想編集モードにあるように見えます。で行の終わりを超えて移動できますC-f。ただし、これを実行した後に四角形をヤンクすると、ポイントではなくマークに四角形が表示されます。その時点で現れた場合、それはこの問題を解決するでしょう。
ナニー14年

回答:


10

パッケージextend-rectangle-to-end内の関数rectangle-utilsはあなたが望むものです。オンmelpaです。

スペースを挿入して、現在の四角形の選択範囲を拡張して、領域内の最も長い行をカバーします。

この動作を取得するために、init.elでこれを取得しました。C-x r eバニラemacsの他のものに縛られない

(require 'rectangle-utils)
(global-set-key (kbd "C-x r e") 'extend-rectangle-to-end)

1
明確にするために、このパッケージでは、リージョンを選択してM-x extend-rectangle-to-endから、C-x r M-wまたはを実行しC-x r kます。
カウシャルモディ14年

18

別の答え:を使用しますM-x picture-mode。タブ文字などの途中で長方形を削除またはコピーしたり、レジスタなどに送信したりできます。


3
この方法を使用する利点の1つは、長方形の選択範囲を正確に制御できることです。行1に30文字、行2に5文字がある場合、長方形を幅15文字、高さ2行に選択できます。extend-rectangle-to-end長方形の選択は常に30x2であるため、これを行うことはできません。
カウ

1
picture-mode古くてあまり知られていない。その他のあまり知られていない機能の中でも、exiting(C-c C-c)は末尾の空白を削除します。
ドリュー14年

1
それは素晴らしい、ドリュー!質問:「ラップ」されるようアドバイスしない理由はありますか?(のソースにフックが表示されないため、アドバイスしてください)。rectangle-minor-modepicture-moderectangle-minor-mode
ラスムス14年

1
これが私のアドバイスです。それはここのためのようなもの差し出がましいのだからそれは空白を削除しません:(defun rectangle-mark-mode-wrapped-in-picture-mode (orig-fun &rest args) (if rectangle-mark-mode (picture-mode) (and (eq major-mode 'picture-mode) (picture-mode-exit t)))) (advice-add 'rectangle-mark-mode :around #'rectangle-mark-mode-wrapped-in-picture-mode)
ラスマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.