マウスを使わずに、vimのビジュアルモードのようにキーボードからブロックを選択または強調表示したい。キーボードからこれを行う最も簡単な方法は何ですか?
回答:
質問を正しく理解していれば、もともと長方形の領域ではありません。
C-Spc 現在の位置にマークを付けます。
カーソルがその後にある場合は常に、最後のマークと現在の位置の間のテキストが「選択」されます(これをアクティブにすると強調表示できますが、強調表示しtransient-mark-modeたくない場合はマークを削除する必要があります)。
次のようなコマンドを使用して、そのリージョンを操作できます。
C-w。。リージョンを強制終了します。これにより、リージョンが削除され、キルリングに配置されます。
C-y。。ヤンク。これにより、キルリングの最後のスニペットが挿入されます。
M-y。。サイクルキルリング。直後にC-y、これはヤンクされた部分をキルリング内の他のスニペットに置き換えます。
M-w。。リージョンをキルリングに保存します。のようですがC-w、削除しません。
これは基本的な使用法です。マークには他の用途もあります。チュートリアル(C-h t)をお勧めします。
C-s C-rリージョンの終わり/始まりを見つけるためにこのコンテキストで一般的に使用されることは注目に値します。(特にマクロで役立ちます。)
M-x indent-regionです。
indent-regionうまく動作しますが、c-indent-line-or-region(と結合したことを1、タブキーは)ないです。最後の機能は、マークされた領域ではなく、選択された領域、つまりマウスで選択したかのように強調表示された領域で機能します。
C-Spcマークを付けた場所を2回押すことでそれを行うことができます。これにより、transient-mark-modeが一時的にアクティブになります(キャンセルするまで(でC-g))。次に、ポイントを移動して、選択した領域が表示されることを確認します。
記事「長方形の選択範囲の操作」、特にコメントセクションを参照してください。「CUA長方形のサポート」というタイトルのCUAモードのドキュメントのセクションも参照してください。vimeoに関する素晴らしいビデオもあります。
でも C-SPC、あなたのポイントはどこから何かをマーキング開始する一般的な方法で、多くの場合、迅速/エンドポイントを開始するために動いて、明示的に関与しない/簡単な方法があります...
M-h—段落をマークするための重要な手段。「段落」は、多くの場合、コードのブロックを意味します。
C-M-hおよびC-M-@—それぞれsexpsおよびdefunsをマークするため。これは、Lispだけでなく、いくつかの言語で機能します。
Shiftキーを押したままにする—移動中にハイライトするもう1つの巧妙な方法。たとえば、M-S-f単語全体を転送することを選択します。これは
shift-select-modeであり、Emacs24以降ではデフォルトで有効になっています。一部の(チクレット以外の)キーボードでC-S-は、1つのピンキーで押し続けることができるはずです。
これらのいずれかを繰り返し押すと、選択範囲が広がります。
(注:C-g実験中にマーキングをキャンセルするために頻繁に使用します。)
地域や物事の選択を改善するアドオンパッケージがいくつかあります。これらはすべてうまく連携し、さまざまなユースケースに適合します。それらすべてを使用してください!
Expand-Region:Expand Regionは、選択した領域をセマンティック単位で増やします。必要なものが選択されるまで、キーを押し続けます。 C-=推奨されるバインディングです。数回叩いて必要なものを手に入れましょう。
Easy-Kill:M-w単語、性別、リストなど、さまざまな種類のものを選択するためにニーモニックを使用します。
Zop-to-Char: zap-to-charに似ていますが、優れた選択やその他のメニュー方式のアクションを提供します。
diff-hl:コミットされていない変更された領域を強調表示します。diff-hl-mark-hunkハンクを選択/マークするために使用します。
Edin Salkovicの回答を拡張するには、CUAモードを使用している場合、を使用して視覚的なブロック選択を開始できます。CUAのドキュメントで説明されているブロック選択を制御するためのショートカットはたくさんあります。
mark-defun