Я делаю, C-a
C-k
C-k
чтобы убить всю точку, точка включена.
Если я хочу скопировать строку вместо того, чтобы убить ее, я могу нажать C-/
C-/
сразу после ввода последовательности выше.
В качестве альтернативы я могу сделать C-a
C-SPC
C-n
M-w
.
Есть ли более быстрый способ убить или скопировать всю точку линии?
copy-paste
editing
itsjeyd
источник
источник
kill-whole-line
. :)evil-mode
. Изучайте команды Vim, вы не пожалеете!Ответы:
Вы можете использовать,
kill-whole-line
чтобы убить всю точку линии. Положение точки не имеет значения. Эта команда связана с C-S-DELпо умолчанию.Вы также можете указать
kill-line
(привязать к C-k) убить всю строку, установив переменнуюkill-whole-line
в ненулевоеnil
значение:Обратите внимание, что точка должна быть в начале строки, чтобы это работало.
Тогда есть эти два драгоценных камня (через emacs-fu ):
С их помощью вы можете убить или скопировать точку линии одним нажатием клавиши :
Обратите внимание, что если есть активный регион,
kill-region
и онkill-ring-save
будет продолжать делать то, что обычно делает: убейте или скопируйте его.Портирование
slick-cut
иslick-copy
новая система консультацийEmacs 24.4 представляет новую систему рекомендаций . Хотя
defadvice
все еще работает , есть вероятность, что в будущих версиях Emacs это может быть признано устаревшим в пользу новой системы. Чтобы подготовиться к этому, вы можете использовать обновленные версииslick-cut
иslick-copy
:источник
kill-region
и по-kill-ring-save
прежнему работает, даже если регион не является «активным». Это переопределит это поведение. Я использую это поведение время от времени, но если вы не привыкли использовать их таким образом, то, вероятно, вы не заметите разницу.kill-region
т. д. можно использовать / полезно, когдаmark-active
естьnil
.C-SPC
дважды, чтобы активировать, а затем деактивировать метку. Переместите курсор в другое место файла и запустите,kill-region
и он убьет область между точкой и меткой, даже если метка не активна. Вот несколько примеров команд, которые устанавливают (но не активируют) меткуyank
иisearch
. После выполнения этих команд я знаю, где находится метка, даже если она не активна, и многие команды (включаяkill-region
) позволят мне использовать метку без явной ее активации.Решение, которое я нашел для себя, заключается в использовании префиксных аргументов.
Для меня убить половину строки - полезная функция, но я хочу и более простой способ убить целые строки. Так что я сделал так, чтобы
kill-line
просто убить все, что видно, если дать префиксный аргумент.С этим маленьким макросом
C-k
все еще убивает из точки, ноC-3 C-k
проглатывает три целые строки. В качестве бонуса мы получаемkill-whole-line
поведение, делаяC-1 C-k
.источник
kill-ring-save
не принимает префиксные аргументы ...kill-visual-line
обязательноC-k
. Я исправлю это. Еще раз спасибо.Существует пакет,
whole-line-or-region
который называет различные встроенные команды так, чтобы они действовали на текущей строке, если ни один регион не активен, поэтомуM-w
скопирует текущую строку иC-w
, например, уничтожит ее. Я использовал пакет в течение многих лет, и считаю его незаменимым.Кроме того, этот пакет делает так, чтобы числовой префикс указывал количество строк, на которые нужно воздействовать, поэтому
M-2 M-w
копирует две строки. Другие ответы здесь не обеспечивают эту удобную функциональность.Я взял на себя обслуживание пакета на своем аккаунте github, когда автор прекратил поддерживать его и перестал отвечать на запросы.
whole-line-or-region
также предоставляет средства для добавления этого поведения в дальнейшие команды, если вам это нужно.источник
Это не ответ для православных Emacs. Однако, если вы хотите поносить
evil
модальное редактирование, вы можете:dd
для линии уничтоженияcc
для копирования строкиОба могут иметь префикс по количеству строк, которые нужно убить / скопировать (например,
4cc
будут скопированы следующие 4 строки).источник
Помимо ответа @itsjeyd, могу ли я предложить эти две функции?
Затем ключевые определения (вы, вероятно, захотите их адаптировать):
(global-set-key (kbd "<f2>") 'xah-cut-line-or-region) ; cut
(global-set-key (kbd "<f3>") 'xah-copy-line-or-region) ; copy
(global-set-key (kbd "<f4>") 'yank) ; paste
Предоставлено ErgoEmacs
источник
В качестве дополнения к ответу @ itsjeyd выше, у меня есть следующее. (Логика, вероятно, могла бы быть немного очищена, и я сделаю это, когда я портирую на новую систему рекомендаций, я, вероятно, также расширю ее, чтобы расширить до
sexp
/,paragraph
если повторюсь снова).Инициал
C-w
/M-w
будет захватывать только слово в точке, а при повторном вызове - всю строку.источник
Поскольку вы хотите сделать это с минимальными нажатиями клавиш, вы можете использовать превосходный пакет клавишных аккордов Дэвида Андерссона . «Аккорд клавиш» - это две клавиши, нажатые одновременно, или одна клавиша, нажатая дважды.
Вы можете связать любые ключевые аккорды с этими функциями.
источник
Менее специализированный способ - определить
mark-whole-line
, для чего Emacs действительно должен иметь команду по умолчанию.Тогда
C-2 C-w
сделаем работу.Это также облегчает комментирование всей текущей строки.
источник
Это модификация ответа от его jejyd - в настоящее время ответ с самым высоким рейтингом, и я использовал его в течение многих лет. Однако у него есть проблемы: рекомендованная версия
kill-ring-save
иногда может потерпеть неудачу, потому что метка не установлена (как правило, в новом буфере), и даже когда она работала, курсор использовал странный танец после использования функции для копирования одной строки , После некоторого копания меня осенило, что это происходит, потому чтоkill-ring-save
вызовыindicate-copied-region
после того, как он выполнил свою работу, но, поскольку точки и метки не совпадают с скопированной областью,indicate-copied-region
помечают неправильную область.Достаточно сказано. Вот решение, которое исправляет это:
Нет ничего плохого в том, что он советует
kill-region
. Вот вариант, во всяком случае, стилистически более соответствующий вышесказанному:Обратите внимание, что, если
transient-mark-mode
не включен, эти советы ничего не делают.источник
whole-line-or-region
; см. ответ @sanityinc.Я использую пакет под названием composable.el . Отличительной особенностью пакета является то, что он изменяет Mw и Cw (команды копирования и уничтожения) так, чтобы они были более похожими на Vim, так как он принимает вместо этого традиционные команды emacs. Так
C-w l
убивает целую линию. Но вы также можете делать такие вещи, какC-w M->
убить конец файла. Обе команды действуют как обычно при маркировке региона.источник