列を選択し、GNU Emacsで編集を行う方法


15

私はViM、TextMate、およびGNU Emacsを何年も使用しています。

たとえば、ここに編集したいテキストがあります

foo
foo
foo

そして、ここに私が欲しいテキストの結果があります

bar foo
bar foo
bar foo

Vimを使用しているときは、最初の行と最初の列で「Ctrl v」を実行し、「2 j」を押してから「i」を押し、「bar」と入力して完了します。

Textmateを使用しているときは、(マウスで)下を選択しながら「Apple Command Option」を押してから、「bar」と入力して完了します。

しかし、GNU Emacs 23.1を使用しているときは、その方法がわかりません。:((

EmacsWikiを検索してグーグルで検索しましたが、解決策が見つかりませんでした。あなたが私の解決策を知っているなら、私を案内してください。それに感謝します。


@Trey Jacksonと@humble coffee、解決しました、どうもありがとう!!
アリー

回答:


16

2つのオプションが思い浮かびます。1つ目は長方形です(別の回答で述べたとおり)。そのための明示的な指示は次のとおりです。

  1. 最初の行、最初の列に移動
  2. C-SPC
  3. goto最終行(最初の列)
  4. C-x r t bar SPC RET

非常に優れた長方形/列編集コマンドを提供する別のオプションは、CUAモードです。これを使用する方法を説明したブログ投稿(開示:私のブログ)です。CUAモードの威力を見るには、この3分間のビデオを見る価値があります。

CUAモードを次のものと統合します(一時的なマークモードを使用したくないため)。

(setq cua-enable-cua-keys nil)
(setq cua-highlight-region-shift-only t) ;; no transient mark mode
(setq cua-toggle-set-mark nil) ;; original set-mark behavior, i.e. no transient-mark-mode
(cua-mode)

11

Emacs-24.4では、長方形の基本サポートが少し改善されたため、C-SPCfollowed を使用する代わりにC-x r t、次のことができます。

C-x SPC
down down
C-t bar RET

C-SPCメソッドと比較した場合の優れた点の1つは、選択している四角形に関する視覚的なフィードバックが得られることです。もちろん、このcua-modeメソッドも同様に機能します(同様に機能します)。


悲しいことに、改善点はまったく十分ではないようcua-modeです。もっと適切に言えば...言及するだけでcua-mode、長方形が強調表示されている間に、テキストを入力して追加できます。現在の組み込みemacs「ベースサポート」では、ハイライトが消え(選択が「キャンセル」され)、カーソルポイントに入力が挿入されます。これは直観に反するものであり、私が通常望んでいるものではありません(そして、どのようにcua-modeそれを行うかに慣れます)
新竹造

@ShinTakezou:長方形マークモードカウンターは直感的ですが、cuaの動作カウンターは直感的です。幸いなことに、あなたは選択することができます。cuaのサポートを希望する場合は、cua-modeを有効にするか、(長方形のサポートのみが必要な場合)のいずれかを実行できます(global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode)
ステファン

実際、私がしていることは、cua-modeに固執することです。カラムのハイライト、テキストの入力、完了のように動作します。それ以外の場合:列をハイライトし、テキストを追加したい、ミニバッファーにテキストを入力(入力時にバッファーにテキストが表示されない)...、完了 後の最後の文字にタイプミスが表示されます... cuaモードでは、入力中に表示され、削除(挿入全体を元に戻すことはできません)、再考、別の文字を挿入...が強調表示されたままになります必要に応じて、縮小したり、拡大したり、テキストを入力したり、新しい四角形を「カット」したりできます。そのため、私にとってはより直感的で快適です。
新竹造

私はあなたがそれを好きうれしいです;
ステファン

ところで、Emacs-25では、CUA以外の矩形C-t操作(別名C-x r t)を使用すると、新しく挿入されたテキストのプレビューも表示されます。
ステファン

2

emacsでは、この種の列は「長方形」と呼ばれます。だから、これは、関連するドキュメントのページです。

これらのすべてのコマンドでは、操作対象の四角形が領域に含まれている必要があります。そのため、長方形の左上の文字にマークを設定し、長方形の右下の文字まで領域を拡張する必要があります。後のコマンドはM-x string-insert-rectangle、挿入する文字列の入力を求めるコマンドです。


1

最短回答:を使用してCUA長方形モードを有効にしますC-RET

だから、あなたの場合、それは

  1. 最初の行、最初の列に移動し、ヒットC-RETしてCUAモードに入ります
  2. 最後の行、最初の列に移動して、単に入力します barSPC
  3. ESCまたはCGを使用してCUAモードを終了する

より精巧なソリューションとCUAへのリンクについては、@ Treyの回答を参照してください。


2
はい、コメントするにはあまりにも評判があります。私は彼の答えを繰り返したくありませんが、CUA docからさらに情報を追加します。
マーティン

0

これにはreplace-regexpを使用できます。

  1. 最後の行にマークを設定-> C SPC、最後の行に移動
  2. ミニバッファにMx replace-regexp RETと入力します(このMrにキーバインディングがあります)
  3. ^ RETを与える
  4. バーを入力してRETを押す

これにより、行の先頭にバーが追加されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.