Notepad ++では、Alt-LeftMouseClick-Dragを押して長方形の領域を選択できます。
Emacs(windows)でこれを行うにはどうすればよいですか?
私は http://www.emacswiki.org/emacs/RectangleCommands でメソッドを試しましたが、私の選択は長方形ではなく通常の領域として発生します:
http://i.stack.imgur.com/tBMBN.png
また、CUAモードを有効/無効にしてみました。
Emacsでは、コマンドがテキストの連続部分または長方形に影響するかどうかは、選択がどのように見えるかに依存するのではなく、コマンドに依存します。
画面上で選択範囲を長方形として表示する方法は知りませんが( この回答 を参照)、リンク先のページにリストされている長方形コマンドのいずれかを使用すると、といった C-x r k
またはC-x r t
、選択範囲は通常の領域のように見えますが、選択範囲の最初と最後で定義された四角形に作用することがわかります。
Emacs 24.4以降では、C-x SPC
がrectangle-mark-mode
にバインドされ、長方形を視覚的に選択します。
http://emacsredux.com/blog/2014/01/01/a-peek-at-emacs-24-dot-4-rectangular-selection/ は、これについて詳しく説明しています。
リストに追加するもう1つの楽しいもの。
evil-mode
(つまり、Vimエミュレーションレイヤー)を使用している場合は、evil-visual-block
(C-v
のデフォルトバインディング)を使用して視覚的に長方形を選択できます。
長方形のコマンドを使用するには、長方形の1つの角にマークを配置し、反対側の角をポイントします。領域は通常どおり表示されますが、長方形コマンドは、ポイントとマークで区切られた長方形に作用します。 CUAモードはこれに影響しません。
あなたはただあなたの想像力を使う必要があります:)
長方形の選択を表示する場合は、代わりにCUA長方形を使用してください。それを有効にする
(cua-selection-mode t)
次にM-RET
を使用して選択を開始し、カーソルを移動して変更します(RET
を押してカーソルを別のコーナーに移動することもできます)、C-?
を使用してコマンドのリストを取得します長方形を操作します。選択をアクティブにしたM-RET
は、C-g
と同様に選択をキャンセルします。
CUA選択モードではCUAの残りの部分が有効にならないため、C-x
、C-c
、C-v
などは変更されません。
ほとんどのrectangleコマンドは、C-x r
プレフィックスを介してアクセスされます(「register」コマンドと共有)。すべての特別なkill、yank、delete、number、replace、などのすべてのコマンドの説明については、長方形マニュアルセクション ここ を参照してください。あなたの長方形に役立ちます。
接頭辞のない唯一の長方形コマンドはイニシエーターC-x SPC
(rectangle-mark-mode
)ですが、非常に一般的なC-SPC
(set-mark-command
)によく似ているため、覚えるのは簡単です。
最近のEmacsバージョンでは、選択された領域がうまく機能しており、選択されたものを正確に表示しています。
(_ helm-descbinds または guide-key を使用して、C-x r
コマンドの接頭辞を完成させることをお勧めします。)
rectangle-mark-mode
およびcua-rectangle-mark-mode
によって長方形として表示される強調表示についてなど、他の人が言及したことに加えて、ライブラリ Mode-Line Position ( modeline-posn.el
)は、長方形で使用するための次の機能を提供しますコマンド:それはsize-indication-mode
の一部として、モードラインで長方形の長さと幅を示します。
通常、size-indication-mode
はバッファーサイズとバッファー内の現在の相対位置のみを表示します。ライブラリmodeline-posn.el
を使用すると、領域がアクティブな場合に表示されるものが異なります:
入力を読み取る四角形コマンドの場合、四角形の行と列の数が表示されます(例:21 rows, 16 cols
)
それ以外の場合、領域サイズ。
この情報の表示方法をカスタマイズできます(オプションmodelinepos-style
)。デフォルトでは、アクティブな領域のサイズは、領域内の文字数と行数として表示されます(例:473 ch, 3 l
)。
アクティブな領域(長方形を含む)のモードライン表示に使用される面は、面region
であるため、領域と同じように見えます。
追加の機能は、アクティブな領域に作用するコマンド、または領域がアクティブなときにその動作を変更するコマンドが入力を読み取るときに、モードライン領域の表示にさらに注意を向けます。これは別の面を使用します。デフォルトでは面region
ですが、赤い上線と下線が付いています。
最後に、ブールオプションmodelinepos-empty-region-flag
は、emptyアクティブ領域がモードラインに示されているかどうかを判別して、注意を引きます(空の領域で動作していることに気付かない場合があります)。たとえば、次のように表示されます(顔region
を使用して強調表示):0 ch, 0 l
。
必要に応じて、マウスでも同じことができます。たとえば、行末に存在しない文字を選択できるキーボードを使用する場合ほど具体的ではありませんが、ほとんどのユースケースに対応します。
(defun mouse-start-rectangle (start-event)
(interactive "e")
(deactivate-mark)
(mouse-set-point start-event)
(rectangle-mark-mode +1)
(let ((drag-event))
(track-mouse
(while (progn
(setq drag-event (read-event))
(mouse-movement-p drag-event))
(mouse-set-point drag-event)))))
(global-set-key (kbd "M-<down-mouse-1>") #'mouse-start-rectangle)
これはここにあります: https://emacs.stackexchange.com/a/7261