Какая ключевая последовательность убивает большой кусок моего буфера?

Какова последовательность клавиш для удаления из текущей позиции в начало буфера?

Я прошу не потому, что я хочу использовать последовательность, но чтобы предотвратить ее. Я всегда делаю это по ошибке, часто, когда я работаю слишком быстро, и я не понимаю этого позже. Это происходит, может быть, только четыре раза в год, но иногда, если я не понимаю этого достаточно быстро, это может быть разрушительным.

Я мог бы отключить функцию или последовательность, если бы знал только, что это было.

Может быть, мне придется включить какой-то журнал нажатий клавиш, чтобы узнать, как я совершу эту ошибку?

Я заметил, что проблема возникает, когда я в текстовом режиме . Я использую EMACS 24.3.1 в Windows 10, если это имеет значение.

0
Попробуйте l (или M-x view-lossage ), чтобы увидеть последние нажатия клавиш
добавлено автор alastairs, источник

1 ответы

Возможно, что вы вызываете kill-region , который привязан к C-w . Это то, что можно было бы рассматривать команду вырезания в других приложениях. Если регион неактивен, он будет убивать от вашей точки до того места, где был последний знак, который может быть началом буфера.

The command view-lossage (bound to C-h l or l) displays the last 300 input keystrokes.

3
добавлено
@tom Вы можете использовать (defadvice kill-region (активируется только активная область) (если (use-region-p) ad-do-it (сообщение «Region not active»))) чтобы избежать такого поведения. С этим советом регион убивается только в том случае, если он активен и не пуст.
добавлено автор Mike Spivey, источник
Спасибо Жюлю. Ну, C-w (kill-region) - это хлеб-масло, поэтому я не буду его отключать, но я не знал, что его поведение по умолчанию было таким, как вы описали, когда знак неактивен. Дело закрыто.
добавлено автор Dima Tisnek, источник
Боже, еще лучше. Я попробую.
добавлено автор Dima Tisnek, источник
Ну, это работает, но также отключает kill-line, C-k. Если я найду способ исправить это, я отправлю его.
добавлено автор Dima Tisnek, источник
Рад помочь. Если этот ответ решает вашу проблему, не стесняйтесь отмечать его как принятое, чтобы другие знали, что этот случай закрыт. Благодаря!
добавлено автор Airsick, источник
Я не совсем уверен, почему мой ответ был неприемлемым, потому что вы хотели знать, что это за функция. Если вы также захотите изменить функцию, возможно, вы можете скопировать команду kill-region (исходный код, который можно найти, запустив Ch k Cw ) в свой собственной функции, называемой kill-region-safe или что-то вроде этого. В этой новой функции вы можете вначале добавить чек, чтобы узнать, является ли region нулем. Затем вы можете привязать kill-region-safe к C-w !
добавлено автор Airsick, источник
Вы также можете добавить псевдоним kill-region в kill-region-safe , а затем обернуть kill-region-safe в defadvice , а затем rebind kill-region-safe в Cw
добавлено автор Airsick, источник