たとえば、次の5行の先頭に添付しemacs24
たいと思います。#
だからこれを持っている:
Line1
line2
line3
これを取れ:
#Line1
#line2
#line3
指定した行数。どうやってやるの?ありがとう!
これを行うEmacsに組み込まれているものがあるかもしれませんが、それを実行するために確かに小さなLispを書くことができますが、私は通常、これを実行するために「長方形編集」機能を使用します。バッファに次のものが含まれていると想像して.
ください。ポイント(カーソルがある場所)を表します。
.Line1
line2
line3
マークを設定する
C-n
2回押します。これが現在のバッファの状態です。
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>
もう1つの方法は、マクロを使用してこのような反復作業を実行することです。これはEmacsでマクロを使用する方法を説明するページです。あなたがそれに精通していないならば、あなたはそれを見ることができます。
あなたの場合、次のキーが機能します。
基本的に、ステップ2-5は、先頭に#を追加し、次の行の先頭に移動するマクロを記録します。手順6〜7でマクロを10回実行します(もちろん、任意の数に変更できます)。これはかなり多くのキーストロークになり、初心者は気に入らないかもしれません。多分他の人がより良い解決策を持っています。
なぜだけではないのですquery-replace-regexp
かreplace-regexp
?たとえば、地域を選択して実行しますC-M-%^RET#RET!
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
このcomment-region
特定の例では良いmultiple-cursors
のですが、この種のことを一般的に行うための非常に強力な方法については、パッケージを確認してください。
C->
各行の先頭にカーソルが来るまで繰り返し押すだけで、それから押す#
と完了です(C-g
余分なカーソルを取り除くため)。
これは、はるかにインタラクティブな形式でC-x r t
あり、非長方形の領域でも機能します(C-s
たとえば後)。
試してみてくださいM-x string-insert-rectangle
。このコマンドは、長方形のすべての行に文字列を挿入します。