Emacsで文字を改行で置き換える方法は?


285

Emacs ;を使用してreplace-string、またはreplace-regexpEmacsで、文字を新しい行に置き換えようとしています

私は次のコマンドを試しました:

  • M-x replace-string RET ; RET \n

    これは;2文字で置き換えられます:\n

  • M-x replace-regex RET ; RET \n

    これにより、次のエラーが発生します(ミニバッファーに表示されます)。

    置換テキストでの「\」の無効な使用。

replace-stringこのタスクに使用することの何が問題になっていますか?それを行う他の方法はありますか?

ありがとう。

回答:


427

M-x replace-string RET ; RET C-q C-j

  • C-q以下のためquoted-insert

  • C-j 改行です。

乾杯!


3
Cqは、実際quote-insertには次の文字を引用しています。
Joe Casadonte 2009年

2
「quoted-insert」のように、実際には「quote」ではなく「quoted」だと思います。少なくとも、バージョン22.1の場合と同じです。
ブライアンオークリー

8
C-jはリテラル0x0a制御コードですが、Retこれは見積もりの​​横のキーであり、を送信します0x0den.wikipedia.org/wiki/C0_and_C1_control_codes
Jonathan Arkell

2
vimのユーザーのための注意、使用C-jのEmacsながら、C-mのvim
Alpha TAN 2016年

2
@JonathanArkellそれはそれがどのように機能するかの説明ですが、なぜではありません。エディター内でRetは0x0aを生成するので、quoted-insertで0x0dを生成する必要があるのはなぜですか?それは意味がありません。(歴史的な理由で内部キーボードコードが0x0dであるためだけですか?どこでもキーマップを使用しています。なぜここで完璧な意味があるのではないのですか?)
vog

74

ミニバッファーに改行を入れる方法は4つあります。

  1. C-o

  2. C-q C-j

  3. C-q 12 (12は改行の8進値)

  4. C-x oメインウィンドウに、と改行を殺しC-k、その後、C-x o戻ってミニバッファに、とそれをヤンクC-y


10
言及するための1 C-o!に比べてキーストロークが1つ少なくなりますC-q C-j。以前にそれを使用することを考えていませんでした。
itsjeyd 14

バージョン4をありがとう!CoおよびCqがリバウンドしている場合に役立ちます。
ヨアヒムW

どうもありがとう。Coが機能し、Cq Cjが機能しない理由を説明できますか?
Christian Madsen

C-oはミニバッファーに改行を挿入した後もポイントを移動しないため、置換文字列の改行の後に何かを挿入する場合も、右矢印キーを押す必要があります。
Robin Green、

私のバージョンのEmacs 25.2.2では、C-o検索の使用時にメインウィンドウにC-q C-j改行が入力され、ミニバッファーに改行が入力されます。C-oクエリで動作します-置き換えます。
TCプロクター

25

常にミニバッファーにカットアンドペーストできることを忘れないでください。

そのため、バッファから改行文字(または任意の文字列)をコピーし、置換テキストを求められたらヤンクすることができます。


2
キーバインドがわからないキャラクターにとっては本当に良いアイデアです。
レイマール

ああああ !とても簡単 !
ジェレミーPouyet

8

より明確に:

セミコロン文字(;)を改行で置き換えるには、次の正確な手順に従います。

  1. 変更したいテキストを含むバッファの左上にカーソルを置きます
  2. mx replace-stringと入力してRETURNを押します
  3. ミニバッファは次のようなものを表示します:文字列を置き換えます(デフォルト^->):
  4. 置き換える文字を入力します。この場合、 ; RETURNを押します
  5. ミニバッファは次のようなものを表示します:string; と:
  6. Cq Cjを実行します
  7. セミコロンのすべてのインスタンスが改行に置き換えられます(カーソル位置からバッファーの最後までが表示されます)

元の説明が言うよりも少し。


2

テキストモードに切り替え

M-x text-mode

インデントするブロックを強調表示

インデント

C+M \

任意のモードに切り替えます。


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