2010-09-12 32 views
4

時候當我打C-K,Emacs的殺死結束的行。當我再次擊中C-K時,它「殺死了換行符」,並帶來了下一條線。但是,下一行的縮進仍然完好無損,並且最終可能會有一行中間有很多空格的行。獲取Emacs的加入線殺線

所以,從這個:

previous line material 
    next line material 

這樣:

previous line material  next line material 

我明白我可以用M- ^正確聯接線,但是這需要光標將在下一行。如何修改C-k,以便在殺死換行符時還殺死下一行的縮進?

+0

你應該問問superuser.com的好人。 – zneak 2010-09-12 17:39:46

回答

4

對於C-k我不知道,但你可以使用just-one-space函數變換任意數量的空間分成中庸之道一個空間(它必將對M-space

+0

我其實很喜歡Sean和Remi的答案,但是發現M-space對我來說更容易一些。謝謝 :) – qrest 2010-09-12 21:13:44

0

這將做到這一點:

(defun my-kill-line (&optional arg) 
    (interactive "P") 
    (if arg 
     (kill-line arg) 
    (when (prog1 (eolp) (kill-line)) 
     (just-one-space 1)))) 
4

如果你給M-^參數(例如銅M-^),它將加入下一行到當前行。

1

下面是行爲(我覺得)你想成爲kill-line堵塞的方式:殺死一個換行符時,也殺下面的壓痕。請注意,這可能會導致沒有空間被光標,這就是爲什麼我想我會用M-1 M-^C-k M-SPC,而不是去後存在。

(defadvice kill-line (around kill-indentation 
         activate compile) 
    "When killing a line break, also kill any subsequent indentation." 
    (let ((f-v-l (symbol-function 'forward-visible-line))) 
    (flet ((forward-visible-line (arg) 
      (funcall f-v-l arg) 
      (skip-chars-forward " \t"))) 
     ad-do-it))) 
0

我有這個在我的.emacs:

(defun pull-line() 
    "Pull the next line that contains anything up to the end of this one" 
    (interactive) 
    (save-excursion 
    (end-of-line) 
    (while (looking-at "[ \n\r\t]") 
     (delete-char 1)) 
    (if (looking-back "^[[:blank:]]*[[:punct:][:alnum:]].*") 
(fixup-whitespace) 
     (indent-according-to-mode)))) 
(global-set-key "\C-cp" 'pull-line) 

它拉下一個非空行到this一個,如果有上this行任何它使得其不調用(fixup-whitespace)大約95%的時間是正確的,否則它會縮小到emacs認爲合適的水平。我認爲我從vim複製了這個概念?

我用它所有的時間,無論如何。

0

我才意識到我也有這個在我的.emacs,更正是你想要的,但我忘了我有它,因爲我用拉線更加頻繁。我想我從emacswiki偷了這個:

(defun kill-and-join-forward (&optional arg) 
    "If at end of line, join with following; otherwise kill line. 
Deletes whitespace at join." 
    (interactive "P") 
    (if (and (eolp) (not (bolp))) 
     (progn 
    (delete-indentation t) 
    (if (looking-at " $") 
     (delete-char 1))) 
    (kill-line arg))) 
(global-set-key "\C-k" 'kill-and-join-forward)