2009-08-12 6 views
4

Ich habe einen Hervorhebungsmodus (vergiss, wie es heißt), der mir durch Markieren des Textes zeigt, welche Region ich zwischen Marke und Punkt ausgewählt habe. Das ist sehr praktisch, wenn man Regionen zerstört. Manchmal, auch wenn kein Text sichtbar hervorgehoben ist, aber ich versehentlich C-w drücke, tötet er immer noch gelegentlich Text. Meine Frage ist, wie kann ich dieses Verhalten stoppen? Ich möchte nur, dass es Text tötet, wenn ich es hervorgehoben habe.Wie vermeidet man versehentlich Text in Emacs zu töten?

+1

InRe schließen Stimmen: da die Antwort scheint in elisp zu sein, denke ich, dass SuperUser wahrscheinlich * nicht * der beste Ort dafür ist. Es sollte hier bleiben. – dmckee

Antwort

8

Ihre eigene Funktion definieren und den Schlüssel-Bindung außer Kraft setzen:

(defun my-kill-region() 
    (interactive) 
    (if (region-active-p) 
     (call-interactively 'kill-region) 
    (message "Region not active, didn't kill"))) 

(global-set-key (kbd "C-w") 'my-kill-region) 
1

Drücken Sie C-Space (set-mark-command) kurz vor C-w, um die Markierung an der Cursorposition zu setzen, sodass zwischen der Markierung und der Cursorposition kein Text zum Löschen vorhanden ist.

+2

Bevor also versehentlich C-w gedrückt wird, sollte man versehentlich C-Space drücken? – Beta

6
M-x transient-mark-mode 

wird die Region hält markiert auch nach der Eingabe beginnen, und wenn Sie C-Raumzeichen setzen verwenden. Dann wirst du sehen, was C-w töten wird.

6

Setzen Sie die Variable mark-even-if-inactive-nil. Auf diese Weise können Sie nur Text löschen, wenn dieser markiert ist.