web-dev-qa-db-ja.com

EmacsまたはVimでのブロック編集*ライブ*

jEditはブロック編集をサポートしていますが、EmacsとVimは同じテーマでいくつかの深刻なユーザビリティの問題を抱えているようです。誰かがここで未知数を埋めることができれば、どちらかのエディターを使用する方がはるかに耐えられるでしょう:

  • 実際の長方形の選択:ここで選択画面上は長方形であり、領域の計算に使用される線形の選択ではありませんEmacsは制限されているようです。
    • jEdit:長押し Ctrl を選択します。
    • Vim:クリック Ctrl-v を選択します。
    • Emacs:不明; 400行以上のようです プラグイン が必要です。
  • ライブ長方形編集:ブロック選択後に編集すると、all行で結果がどのように表示されるかを確認します。
    • jEdit:入力を開始するだけで、最終結果が表示されます。
    • Vim:クリック Shift-i とタイプ。を押すまで、最終結果は最初の行にのみ表示されます Esc 挿入モードを終了します。 不明すべての行の結果をすぐに確認する方法があるかどうか。
    • Emacs:不明;唯一の方法は C-xrt を押した後に入力するテキストを設定します Ret
  • テキストの外側の位置での選択の開始と終了:たとえば、各行の最初のN文字を削除したいのですが、最初と最後の文字を削除します行に含まれる文字はN文字未満です。
  • ブロックをインラインで貼り付ける:コピーしたブロックを、複数行を貼り付けるように貼り付けます。のように、すでにそこにあるテキストをプッシュしますdown 、 正しくはありません。
    • jEdit:デフォルト。ブロックをブロックとして貼り付けるには、最初に別のブロックを選択する必要があります。
    • Vim: OEscVp
    • Emacs:不明

一般的なEmacsブロック選択機能は cua-modeプラグイン

9
l0b0

Vimには答えられますが、Emacsには答えられません。

テキストの外側の位置で選択を開始および終了します。

:set virtualedit=blockは、必要な動作を有効にします。必要に応じて、最初のコロンを削除して.vimrcに追加できます。詳細については、Vim内から:help 'virtualedit'をご覧ください。

ブロックをインラインで貼り付けます:

ヒットしただけなら p コマンドモードでは、Vimはブロックを挿入し、各行の文字を右に押します。別のブロックを選択してヒットした場合 p、Vimはそのブロックを貼り付けたブロックに置き換えます。

コマンドモードのキーシーケンスを使用して、ブロックを「行方向」に貼り付けることができます OEscVp。これにより、現在の行(O Esc)の上に行が挿入され、行ごとに選択され(V)、その上に貼り付けられます(p)。これを(たとえば)に短縮できます yp:nmap yp O<Esc>Vpのようなマッピングで-文字通りタイプします。 Escキーを押すのではなく、<Esc>に5つのキーストロークを使用します。

7
Jander

たとえば、各行の最初のN文字を削除したいのですが、最初と最後の行に含まれる文字がN未満です。

Emacs:最初の行から選択を開始し、不足している文字数(スペースなど)を最後の行に追加してから、kill-rectangleを使用します

または、artist-modeまたはpicture-modeを参照してください。これにより、行の長さに関係なくウィンドウ内を自由に移動できます。

ブロックをインラインで貼り付けます

Emacs:最初にkill-rectangleまたはレジスターに保存してブロックを保存し、次に挿入ポイントに移動し、delete-rectangleを使用して、保存した長方形を挿入します。

400行以上のプラグインが必要なようです

Emacsの場合、なぜそれが問題になるのですか?プラグインはコンパイル可能であり、emacsの哲学は、すべてをコアに入れるのではなく、プラグインを使用してエディターを拡張することです。

5
Tom

Emacsen 22.1以降に付属している 'cua-mode' があります。または、リンクをたどって以前のバージョンのEmacsをダウンロードしてください。機能を紹介する 短いビデオ があります。

一般的な長方形のコマンドについては、 マニュアル を読んでみてください。これは簡単な紹介です。

4
Trey Jackson

Vimでは、最初のn文字を削除する一般的な方法は、:%s/.\{0,6\}//のようなことをすることです。

%はドキュメント全体を実行します。それを選択または気になる実際の行に置き換えることができます。 sコマンドは「置換」用です。正規表現は指定したものに置き換えられ、特定のオプションを追加しない限り、各行で1回だけ一致します。 /は区切り文字です。これは任意の文字にすることができますが、他のものを使用するのが有利でない限り、通常は/が使用されます(したがって、残りの部分で/をエスケープする必要はありません)。コマンドの)。最初の区切り文字の後の引数は、選択範囲内の一致する文字列を見つけるために使用される正規表現です。 2番目の区切り文字の後の引数は、一致が置き換えられるものです。

したがって、このコマンドは、任意の文字の0〜6個のインスタンスを検索し、それらを何にも置き換えないことを示しています。

0
Shawn J. Goff