Emacsで現在の行を削除するにはどうすればよいですか?


122

viに相当するemacsは何ddですか?現在の行を削除したい。CTRL+を試しましたk現在の位置からのみ削除さます。

回答:


212
C-a # Go to beginning of line
C-k # Kill line from current point

もあります

C-S-backspace   # Ctrl-Shift-Backspace

を起動しますM-x kill-whole-line

別のグローバルキーバインディングを設定する場合は、これを〜/ .emacsに配置します。

(global-set-key "\C-cd" 'kill-whole-line)     # Sets `C-c d` to `M-x kill-whole-line`

行全体を削除する場合は、コマンドの前に番号を付けることができます。

C-u 5 C-S-backspace    # deletes 5 whole lines
M-5 C-S-backspace      # deletes 5 whole lines

C-u C-S-backspace      # delete 4 whole lines. C-u without a number defaults to 4

C-u -5 C-S-backspace   # deletes previous 5 whole lines
M--5 C-S-backspace     # deletes previous 5 whole lines

時には私もC-x z役立つと思います:

C-S-backspace         # delete 1 whole line
C-x z                 # repeat last command
z                     # repeat last command again. 
                      # Press z as many times as you wish. 
                      # Any other key acts normally, and ends the repeat command.

これは機能します。1つのコマンドを使用してこれを行う方法はありますか?これを行うには、カスタムキーバインディングを作成する必要がありますか?
Manoj Govindan、

14
知らなかったC-x z、それは本当にクールだ。そして、素晴らしく正確な答え。
slu

2
vimのC-k C-kように機能するものもありますd$ S-jが、これにより行をかなりうまく削除できます。
Theo Belaire、2013年

なんでスペースがないのC-cd
Elliot Gorokhovsky、2015年

@RenéG:スペースはオプションです。
unutbu 2015年

11

(OSのクリップボードに入れてリングを殺す)行をkillしたくない場合は、単に削除してください:

(defun delete-current-line ()
  "Delete (not kill) the current line."
  (interactive)
  (save-excursion
    (delete-region
     (progn (forward-visible-line 0) (point))
     (progn (forward-visible-line 1) (point)))))

3

キルリングに配置せずに行を削除する別の方法:

(defun delete-current-line ()
  "Deletes the current line"
  (interactive)
  (delete-region
   (line-beginning-position)
   (line-end-position)))

これにより、空白行の先頭にポイントが残ります。これも取り除くには(delete-blank-lines)、この例のように、関数の最後に次のようなものを追加することをお勧めします。

(defun delete-current-line ()
 "Deletes the current line"
 (interactive)
 (forward-line 0)
 (delete-char (- (line-end-position) (point)))
 (delete-blank-lines))

1

何も選択せずに、行の任意のポイントから行全体を削除(kill)する最も速い/最も簡単な方法は次のとおりです。

C-w  ; kill-region

何が選択されていても、何も選択されていない場合はデフォルトで線を削除するのに便利です。

質問を考えると、おそらくVimの「ヤンク」を複製することにも興味があるでしょうyy(Emacsの用語では「ヤンク」はVimの「プット」と紛らわしいですがp)。これは:

M-w  ; kill-ring-save

素晴らしく合同で、覚えやすいです。Vimに少し似ていi_CTRL-Wます。

上記のいずれかを使ってキルリングに何かを入れたら、おそらくそれを「ヤンク」(貼り付け)したいと思うでしょう。

M-y  ; yank-pop

(端末のEmacsではCSバックスペースが機能しない可能性があることに注意してください。)


1

行を削除するための個別のキーを持っているか、または前置引数を呼び出す必要はありません。 「の終わりまで殺し、次の呼び出しで行全体を殺す」crux-smart-kill-lineを使用できます。ただし、のdelete代わりにkill使用したい場合は、以下のコードを使用できます。

文字列へのポイント操作(kill / delete)には、zop-to-charの使用をお勧めします

(defun aza-delete-line ()
  "Delete from current position to end of line without pushing to `kill-ring'."
  (interactive)
  (delete-region (point) (line-end-position)))

(defun aza-delete-whole-line ()
  "Delete whole line without pushing to kill-ring."
  (interactive)
  (delete-region (line-beginning-position) (line-end-position)))

(defun crux-smart-delete-line ()
  "Kill to the end of the line and kill whole line on the next call."
  (interactive)
  (let ((orig-point (point)))
    (move-end-of-line 1)
    (if (= orig-point (point))
        (aza-delete-whole-line)
      (goto-char orig-point)
      (aza-delete-line))))

ソース

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