すべての行の最初のn文字を削除する方法は?


15

私は最近尋ねました:

すべての行にプレフィックスを追加する方法は?

だから、以下のコードから行きます:

I said Hello
I said There
I said I am some code

次のようにコーディングするには:

Hello
There
I am some code

では、行からn個の文字を削除するにはどうすればよいですか?


私見それはあなたの前の質問と同じです。
A_P

回答:


28

さらに簡単です!繰り返しますが、長方形コマンドを使用します。削除する長方形の1つの角に移動し、を押しC-SPCてマークを設定します。長方形のもう一方の角に移動して、C-x r ddelete-rectangle)を押します。たとえば、操作する最初の行に移動し、C-aまたはhomeを押して行の先頭に移動し、操作する最後の行に移動して、右下隅に移動してから削除します。C-u number C-fC-x r d

最終行の文字数が目的の文字数より少ない場合は、代わりに左下隅と右上隅を使用する方が便利な場合があります。または、ジャンク文字を挿入できます(最初の行と最後の行の両方が短い場合に便利です)。

を使用C-x r kして、長方形を殺すことができます。これにより、C-x r y後でヤンク()できます(挿入したい場所の左上隅に移動します)。

C-x r tstring-rectangle)を使用して空の文字列を入力することもできます。

長方形コマンドは列の位置に基づいています。n列(タブなどの複数列の文字と違いがあります)ではなく、n文字を削除する場合は、正規表現の置換を使用できます:^.\{42\}何も置き換えずにすべての行の最初の42文字を削除します。


3
すべての長方形コマンドを覚えようとする代わりに、C-spcの代わりにCx spcを使用することもできます。これにより、領域が長方形になり、すべてが機能します。
マラバルバ14年

1
@Malabarbaただし、Emacs 24以降のみ。(Emacs 23を搭載したマシンでこれを作成します。まだまだ存在します。)
ジル「SO-悪であるのをやめなさい」14年

2
私のお悔やみ... :
マラバルバ14年

これは、2013-10-25のGNU Emacs 23.4.1(x86_64-pc-linux-gnu、GTK +バージョン2.24.21)で動作し、Debianによって変更されました
-davidrmcharles

4

別の可能性:このようなタスクに複数のカーソルを使用することが本当に好きです。package.elMELPA を介して利用でき、それは私のemacsの不可欠な部分になりました。私は単純に選択しI said(場合によってはその前に改行を含めます)、を使用M-x mc/mark-all-like-thisして、途中にいます。より詳細な制御が必要な場合は、mc/mark-next-like-thisまたはを使用できますmc/mark-next-lines

私のキーバインディング:

(use-package multiple-cursors
  :bind (("C->"   . mc/mark-next-like-this)
         ("C-M->" . mc/mark-all-like-this-dwim)))

必須のEmacs Rocks!エピソード:http : //emacsrocks.com/e13.html


3

あなたがしている場合はcua-mode有効になって、それから:

  • C-a 行の先頭に移動するには、
  • C-RET 長方形を開始するには、
  • 次に、矢印キーまたはemacs moveコマンドで移動します C-f
  • DEL 選択を削除するには

cua-modeEmacsの標準的な長方形と比較して、同等の作業方法を好む:

  • C-a 行の先頭に移動するには、
  • C-SPC 長方形を開始するには、
  • 次に、矢印キーまたはemacs moveコマンドで移動します C-f
  • C-x r d 選択を削除するには

cua-modeEmacsの標準長方形に比べて3つのキーの押下を節約できます。


3

完全を期すために、各行から最初の3文字を削除する(正式には:ポイントから、またはリージョン内)には、空の文字列でregexp-replacing ^...(またはより一般的には^.\{3\})を実行します。

説明:正規表現で^は、「行頭」を.意味し、「任意の文字」を\{n\}意味し、「前のもののn回の繰り返し」を意味します。

これには、インタラクティブであるという追加の利点が!あります(1回押すと、これquery-regexp-replace以上の質問なしですべてを置き換えます)。


1
なぜダウン投票なのですか?
mbork 14年

0

そしてもう1つの可能性:

F3C-aC-3C-dC-nF4

基本的に「行の先頭に移動し、3文字を削除して、次の行に移動する」と言って、キーボードマクロを記録します。次に、でバッファの最後まで再生するC-uF4C-xC-kr、リージョン内の行に適用します。これには1つの欠点があります:行が3文字未満の場合に壊れます。


-1

行だけの場合は、Mzを使用して文字をzap-to-charすることができます。この文字は、ポイントと削除するポイントとの間で繰り返されないと仮定します。場合によっては、これはリージョンを作成するよりも高速です。

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