[emacs] Emacs에서 현재 줄을 어떻게 삭제할 수 있습니까?

vi와 동등한 emacs는 무엇입니까 dd? 현재 줄을 삭제하고 싶습니다. 시도 CTRL+ k하지만 그것은 단지 삭제 에서 현재의 위치.



답변

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.


답변

라인을 죽이고 싶지는 않지만 (OS 클립 보드와 킬 링에 넣을 것입니다) 간단히 삭제하십시오 :

(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)))))


답변

킬 링에 배치하지 않고 라인을 삭제하는 또 다른 방법 :

(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))


답변

아무 것도 선택하지 않고 줄의 모든 지점에서 전체 줄을 삭제 (종료)하는 가장 빠르고 간단한 방법은 다음과 같습니다.

C-w  ; kill-region

선택한 항목을 삭제하거나 아무것도 선택하지 않은 경우 기본적으로 한 줄을 삭제할 수 있습니다.

질문이 주어지면 아마도 Vim의 “yank”를 복제하는 데 관심이있을 것입니다 yy(Emacs 용어에서 “yank”는 Vim의 “put”이 혼란 스러울 수 있지만 p). 이것은:

M-w  ; kill-ring-save

훌륭하고 일치하며 기억하기 쉽습니다. Vim의 i_CTRL-W.

위의 방법 중 하나를 사용하여 킬 링에 무언가를 넣은 후에는 “yank”(붙여 넣기)를 원할 것입니다.

M-y  ; yank-pop

(CS 백 스페이스는 터미널 Emacs에서 작동하지 않을 수 있습니다.)


답변

줄을 삭제하거나 접두사 인수를 호출하는 데 별도의 키가 필요하지 않습니다. 당신이 사용할 수있는 핵심-스마트 죽 라인
“라인의 끝에 죽이고 다음 호출에 전체 라인을 죽일”것이다. 그러나 당신이 delete대신 선호한다면kill 아래 코드를 사용할 수 있습니다.

point-to-string operation (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))))

출처


답변