Vi'nin emacs eşdeğeri nedir dd? Mevcut satırı silmek istiyorum. Güvenilir CTRL+ kancak yalnızca siler gelen mevcut konumda.
Vi'nin emacs eşdeğeri nedir dd? Mevcut satırı silmek istiyorum. Güvenilir CTRL+ kancak yalnızca siler gelen mevcut konumda.
Yanıtlar:
C-a # Go to beginning of line
C-k # Kill line from current point
Ayrıca birde şu var
C-S-backspace # Ctrl-Shift-Backspace
hangi çağırır M-x kill-whole-line.
Farklı bir genel anahtar bağlama ayarlamak isterseniz, bunu ~ / .emacs içine koymanız gerekir:
(global-set-key "\C-cd" 'kill-whole-line) # Sets `C-c d` to `M-x kill-whole-line`
Bir dizi tam satırı silmek isterseniz, komutun önüne bir sayı ekleyebilirsiniz:
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
Bazen de yardımcı buluyorum 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.
C-x z, bu gerçekten harika. Ve güzel ve kesin cevap btw.
C-k C-kBir d$ S-jin vim gibi çalışan bir tür de vardır , ancak bu, satırları oldukça güzel bir şekilde silebilir.
C-cd?
Hattı öldürmek istemiyorsanız (ki bu onu işletim sistemi panosuna koyar ve halkayı öldürür), ancak silin:
(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)))))
Hattı öldürme halkasına yerleştirmeden silmek için başka bir yöntem:
(defun delete-current-line ()
"Deletes the current line"
(interactive)
(delete-region
(line-beginning-position)
(line-end-position)))
Bu, noktayı boş bir satırın başında bırakacaktır. Bundan da kurtulmak (delete-blank-lines)için, bu örnekte olduğu gibi işlevin sonuna benzer bir şey eklemek isteyebilirsiniz , bu belki biraz daha az sezgiseldir:
(defun delete-current-line ()
"Deletes the current line"
(interactive)
(forward-line 0)
(delete-char (- (line-end-position) (point)))
(delete-blank-lines))
Satırdaki herhangi bir noktadan hiçbir şey seçmeden tam bir satırı silmenin (öldürmenin) en hızlı / en basit yolu şudur:
C-w ; kill-region
Seçili olanı veya hiçbir şey seçilmediyse varsayılan olarak bir satırı silmede çok yönlüdür.
Soru göz önüne alındığında, muhtemelen Vim'in "yankı" nı kopyalamakla da ilgileniyorsunuz, yy(gerçi Emacs deyiminde "yank", kafa karıştırıcı bir şekilde Vim'in "koyma" sıdır p). Bu:
M-w ; kill-ring-save
Güzel ve uyumlu ve hatırlaması oldukça kolay. Hatta Vim'inkine biraz benziyor i_CTRL-W.
Yukarıdakilerden herhangi biriyle öldürme halkasına bir şey koyduğunuzda, muhtemelen onu "çekmek" (yapıştırmak) isteyeceksiniz:
M-y ; yank-pop
(CS-backspace'in terminal Emacs'de çalışmayabileceğini unutmayın.)
Satırı silmek için ayrı bir anahtara sahip olmak veya önek bağımsız değişkenini çağırmak yerine.
"Hattın sonuna kadar öldüren ve bir sonraki aramada tüm hattı öldürecek" temel akıllı öldürme hattını kullanabilirsiniz . Ancak deletebunun yerine tercih killederseniz, aşağıdaki kodu kullanabilirsiniz.
Noktadan dizgeye işlem için (öldür / sil) zop-to-char kullanmanızı öneririm
(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))))