• 締切済み

emacsでコピーせずに一行消す方法

表題の件について質問させていただきます。 emacsであらかじめCtrl+kでコピーしたものをどんどんCtrl+yで貼り付けたいと思っております。 途中で一行消そうとCtrl+kをすれば前に保存していた内容が消えてしまうのですが、上書きせずに一行消す方法はありますでしょうか? .emacsで新しいコマンドを登録する必要がある場合、どのように書けばよいでしょうか? ご存知の方おられましたら、ご教授お願いします。

みんなの回答

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

> 途中で一行消そうとCtrl+kをすれば前に保存していた内容が消えてしまうのですが、 消えてはいないので、普通に C-y M-y すれば kill-ring のも一つ前の内容が出てきます。もっと前なら更に M-y を続けて。その後は連続で yank したければ C-y だけで OK それも面倒なら以下のコードを .emacs に追加して、キーバインドをお好みで修正すれば、だいたい御希望の動作かと。ちなみに拾い物のコードです。 (defun delete-line (&optional arg) (interactive "P") (progn (kill-line arg) (pop kill-ring) (setq kill-ring-yank-pointer kill-ring))) (global-set-key (kbd "C-x d") 'delete-line)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

2つ方法があります。 (1) 別の行を消す時、ctrl-K ではなく DEL とか ctrl-D で1字ずつ消すと記憶されない (2) 別の行を消した後、ctrl-Y で貼り付けた直後にAlt-Yを押すと1つ前にkillしたものがペーストされる。Alt-Yをさらに押せばさらにさかのぼれる >.emacsで新しいコマンドを登録する必要がある場合、どのように書けばよいでしょうか? キーのバインド定義をする方法でしょうか?色々方法があります。 例えば、F2キーに「1つまえにkillしたものをインサートする」を定義するなら、 (global-set-key [f2] (lambda () (interactive) (insert (nth 1 kill-ring)))) .emacsを自分で書くためにはemacs-lisp (elisp) を理解する必要があります。

関連するQ&A