1

たとえば、次の5行の先頭に添付しemacs24たいと思います。#だからこれを持っている:

Line1
line2
line3

これを取れ:

#Line1
#line2
#line3

指定した行数。どうやってやるの?ありがとう!

4

6 に答える 6

4

これを行うEmacsに組み込まれているものがあるかもしれませんが、それを実行するために確かに小さなLispを書くことができますが、私は通常、これを実行するために「長方形編集」機能を使用します。バッファに次のものが含まれていると想像して.ください。ポイント(カーソルがある場所)を表します。

.Line1
line2
line3

マークを設定する

C-n2回押します。これが現在のバッファの状態です。

Line1
line2
.line3

を押しC-x r tます。

タイプ#

Enterキーを押します。

編集したい行を視覚的に選択できるので、コマンドを繰り返す回数の値を入力するよりもはるかに自然だと思います。YMMV

編集

EmacsLispを少し使ってこれを行う方法は次のとおりです。私はEmacsを数年使用していますが、実際にEmacs Lispを使用する方法を学び始めたのはごく最近なので、このコードはそれほど素晴らしいものではないかもしれません。それは仕事を成し遂げます。

(defun insert-n-times (s n)
  (interactive "Mstring:\nNtimes:")
  (while (> n 0)
    (insert s)
    (goto-char (- (point) 1))
    (next-line)
    (setq n (- n 1))))

次のようにして使用します。M-x insert-n-times RET <type a string> RET <type a number>

于 2013-02-22T03:46:38.327 に答える
2

もう1つの方法は、マクロを使用してこのような反復作業を実行することです。これはEmacsでマクロを使用する方法を説明するページです。あなたがそれに精通していないならば、あなたはそれを見ることができます。

あなたの場合、次のキーが機能します。

  1. Line1の先頭にカーソルを移動します
  2. Cx(
  3. '#'を入力します
  4. Cn、次にCa
  5. Cx)
  6. 「#」を追加する行の先頭にカーソルを移動します
  7. Cu 10 Cx e

基本的に、ステップ2-5は、先頭に#を追加し、次の行の先頭に移動するマクロを記録します。手順6〜7でマクロを10回実行します(もちろん、任意の数に変更できます)。これはかなり多くのキーストロークになり、初心者は気に入らないかもしれません。多分他の人がより良い解決策を持っています。

于 2013-02-22T06:56:27.950 に答える
1

なぜだけではないのですquery-replace-regexpreplace-regexp?たとえば、地域を選択して実行しますC-M-%^RET#RET!

于 2013-02-22T17:22:53.430 に答える
1
Line1
line2
line3

私は次のコードを書きました:

  • 最初に数字の引数(これを実行したい回数)を指定します。たとえば、M-3(Altキーを押しながら3を押す)、次の3回を実行します。

  • 以下の提案(f8)のようにキーを使用するか、Mxを使用しますprompt-for-insert

  • 入力する文字列を要求されます。例:「foo」とリターンボタンを押します。

その後、あなたが求めるようにそれは行います。

(defun prompt-for-insert (val)
  (interactive "P")
  (let ((astring (read-string "What do you want to insert?"))
        (value val))
    (while (> value 0)
      (insert astring)
      (move-beginning-of-line 2)
      (decf value)))
  )

(global-set-key [f8] 'prompt-for-insert)

シーケンス全体は次のようになります。

M-3 [f8] foo RET

その結果:

fooLine1
fooline2
fooline3
于 2013-02-22T09:49:47.920 に答える
0

このcomment-region特定の例では良いmultiple-cursorsのですが、この種のことを一般的に行うための非常に強力な方法については、パッケージを確認してください。

C->各行の先頭にカーソルが来るまで繰り返し押すだけで、それから押す#と完了です(C-g余分なカーソルを取り除くため)。

これは、はるかにインタラクティブな形式でC-x r tあり、非長方形の領域でも機能します(C-sたとえば後)。

于 2013-03-18T01:50:03.813 に答える
0

試してみてくださいM-x string-insert-rectangle。このコマンドは、長方形のすべての行に文字列を挿入します。

于 2013-02-24T12:58:58.257 に答える