web-dev-qa-db-ja.com

emacsで長方形を選択する方法

Notepad ++では、Alt-LeftMouseClick-Dragを押して長方形の領域を選択できます。

Emacs(windows)でこれを行うにはどうすればよいですか?

私は http://www.emacswiki.org/emacs/RectangleCommands でメソッドを試しましたが、私の選択は長方形ではなく通常の領域として発生します:

http://i.stack.imgur.com/tBMBN.png

また、CUAモードを有効/無効にしてみました。

21
user3740959

Emacsでは、コマンドがテキストの連続部分または長方形に影響するかどうかは、選択がどのように見えるかに依存するのではなく、コマンドに依存します。

画面上で選択範囲を長方形として表示する方法は知りませんが( この回答 を参照)、リンク先のページにリストされている長方形コマンドのいずれかを使用すると、といった C-x r kまたはC-x r t、選択範囲は通常の領域のように見えますが、選択範囲の最初と最後で定義された四角形に作用することがわかります。

11
legoscia

Emacs 24.4以降では、C-x SPCrectangle-mark-modeにバインドされ、長方形を視覚的に選択します。

http://emacsredux.com/blog/2014/01/01/a-peek-at-emacs-24-dot-4-rectangular-selection/ は、これについて詳しく説明しています。

38
dgtized

リストに追加するもう1つの楽しいもの。

evil-mode(つまり、Vimエミュレーションレイヤー)を使用している場合は、evil-visual-blockC-vのデフォルトバインディング)を使用して視覚的に長方形を選択できます。

10
Dan

長方形のコマンドを使用するには、長方形の1つの角にマークを配置し、反対側の角をポイントします。領域は通常どおり表示されますが、長方形コマンドは、ポイントとマークで区切られた長方形に作用します。 CUAモードはこれに影響しません。

screenshot of emacs with mark, point, and rectangle highlighted

あなたはただあなたの想像力を使う必要があります:)

10
Lily Chung

長方形の選択を表示する場合は、代わりにCUA長方形を使用してください。それを有効にする

(cua-selection-mode t)

次にM-RETを使用して選択を開始し、カーソルを移動して変更します(RETを押してカーソルを別のコーナーに移動することもできます)、C-?を使用してコマンドのリストを取得します長方形を操作します。選択をアクティブにしたM-RETは、C-gと同様に選択をキャンセルします。

CUA選択モードではCUAの残りの部分が有効にならないため、C-xC-cC-vなどは変更されません。

4
jpkotta

ほとんどのrectangleコマンドは、C-x rプレフィックスを介してアクセスされます(「register」コマンドと共有)。すべての特別なkill、yank、delete、number、replace、などのすべてのコマンドの説明については、長方形マニュアルセクション ここ を参照してください。あなたの長方形に役立ちます。

接頭辞のない唯一の長方形コマンドはイニシエーターC-x SPCrectangle-mark-mode)ですが、非常に一般的なC-SPCset-mark-command)によく似ているため、覚えるのは簡単です。

最近のEmacsバージョンでは、選択された領域がうまく機能しており、選択されたものを正確に表示しています。


(_ helm-descbinds または guide-key を使用して、C-x rコマンドの接頭辞を完成させることをお勧めします。)

0
Micah Elliott

rectangle-mark-modeおよびcua-rectangle-mark-modeによって長方形として表示される強調表示についてなど、他の人が言及したことに加えて、ライブラリ Mode-Line Positionmodeline-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

0
Drew

必要に応じて、マウスでも同じことができます。たとえば、行末に存在しない文字を選択できるキーボードを使用する場合ほど具体的ではありませんが、ほとんどのユースケースに対応します。

(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

0
Storm Blast