web-dev-qa-db-ja.com

Emacsでブロックを選択または強調表示する方法は?

マウスを使用せずにemacsでブロックを選択またはハイライトしますが、vimのビジュアルモードのようにキーボードからブロックを選択します。キーボードからこれを行う最も簡単な方法は何ですか?

75
systemsfault

Emacsの領域長方形を見てください。

つまり、通常のように選択を開始します Control-Space、それからリージョンをkillします Control-xrk 貼り付け(またはyank)でブロックを削除 Control-xry

59
Marko

私が質問を正しく理解していれば、それはもともと長方形の領域に関するものではありません。

C-Spcは、現在の位置にマークを付けます。

カーソルがその後どこにある場合でも、最後のマークと現在の位置の間のテキストは「選択」されます(transient-mark-modeをアクティブにすることでこれを強調表示できますが、これは必要ないときにマークを削除する必要があることも意味しますハイライト)。

次のようなコマンドを使用して、その領域を操作できます。

C-w。 。地域を殺します。これにより、リージョンが削除され、キルリングに入れられます。
C-y。 。ヤンク。これにより、キルリングから最後のスニペットが挿入されます。
M-y。 。サイクルキルリング。 C-yの直後に、これはヤンリングされた部分をキルリングの他のスニペットに置き換えます。
M-w。 。キルリングにリージョンを保存します。 C-wに似ていますが、削除しません。

これは単なる基本的な使用法です。マークには他の用途もあります。チュートリアルをお勧めします(C-h t)。

66
Svante

Emacs 24.4には、矩形マークモードがあります。呼び出すC-xスペース。

28

次の記事を参照してください: "長方形の選択範囲の操作" 、特にコメントセクション。 CUAモードのドキュメント 「CUA四角形サポート」というタイトルのセクションも参照してください。 vimeoの素敵なビデオ もあります。

16
edin1

C-SPCは、ポイントがどこからでもマークを付ける一般的な方法ですが、開始/終了ポイントへの明示的な移動を伴わない、より速く/簡単な方法がしばしばあります...

組み込みの選択ショートカット

  • M-h段落にマークの重要な手段。 「段落」は、多くの場合、コードのブロックを意味します。

  • C-M-hおよびC-M-@sexpsおよびdefunsのマーク付けにそれぞれ対応します。これは、lispsだけでなく、いくつかの言語で機能します。

  • shiftを押したままにする-移動中に強調表示する別の滑らかな方法。たとえば、M-S-fは、Word全体を前方に選択します。これはshift-select-modeであり、Emacs 24+ではデフォルトで有効になっています。一部の(チクレットではない)キーボードでは、1つの小指でC-S-を押し続けることができます。

これらのいずれかを繰り返し押すと、選択範囲が拡大します。

(注:C-gを頻繁に使用して、実験中にマーキングをキャンセルします。)

アドオン

いくつかのアドオンパッケージがあり、地域や物の選択を改善します。これらはすべてうまく組み合わされ、さまざまなユースケースに適合します。それらをすべて使用してください!

  • Expand-Region:Expand regionは、選択した領域を意味単位で増やします。必要なものが選択されるまでキーを押し続けます。 C-=は推奨されるバインディングです。数回クリックして、必要なものを取得します。

  • Easy-KillM-wとニーモニックを使用してさまざまな種類のものを選択し、言葉、性別、リストなど.

  • Zop-to-Char:Like zap-to-char、しかし、ニース選択と他のメニュー駆動型のアクションを提供します。

  • diff-hl:コミットされていない変更された領域を強調表示します。 diff-hl-mark-hunkを使用して、ハンクを選択/マークします。

7
Micah Elliott

つかいます Control-Space マークを設定してカーソルを移動します。

transient-mark-modeは選択を強調表示します。 M-x transient-mark-mode

カスタマイズを使用してデフォルトでこのモードを有効にするようにEmacsをセットアップできます。 M-x customize-option RET transient-mark-mode

6
remvee

...およびUbuntuを使用している場合 C-spc あなたのために働いていません:IBusの「次の入力方法」キーバインドをクリアする必要があります。

実行ibus-setupそして、「次の入力方法」のキーバインディングを別のものに変更します(または「...」ボタンをクリックしてから「削除」ボタンをクリックして完全に削除します)。

回答 からSO質問。

1
serv-inc

Emacs 25では、単に C-Space そして、興味のあるテキストの領域をハイライト/選択したい場所にカーソルを移動します。その後、次のコマンドが必要になる場合があります。

  • C-w 切断用。
  • M-w コピー用。
  • C-y 貼り付け用。
0

Edin Salkovicの答えを広げるために、CUAモードを使用している場合は、を使用して視覚的なブロック選択を開始できます。 CUAのドキュメント で説明されているブロック選択を制御するためのショートカットがたくさんあります。

0
Jezz