LINUX.ORG.RU

Сочетания клавиш

 


1

1

Здравствуйте. Штудировал документацию по emacs, в результате родилась небольшая шпаргалка. Родная документация хороша, но очень многословна и информация размазана. Краткой версии найти не удалось, сделал свою. Оставлю здесь. Конечно, список можно продолжить, но на мой взгляд, базовые вещи обозначены.

<DEL> == <BACKSPACE>
############### Перемещение точки ##############################################
* C-p  C-n          Вверх/Вниз
* C-b  C-f          Влево/вправо
* M-f  M-b          На слово вперёд/назад
* C-a  C-e          Начало/конец строки
* M-a  M-e          Начало/конец предложения
* M-<  M->          Начало/конец буфера
* M-g-g	            Перейти к строке. С C-u без num переходит к строке в другом
                    буфере (в наиболее недавнем)
* M-g c             Перейти к символу с указанным номером
* M-r               Репозиционирование точки по левом краю
* C-M-a  C-M-e      В начало/конец defun
* C-M-f  C-M-b      Перемещения по сбалансированным выражениям
* C-M-n  C-M-p      Перемещения по группам выделенным скобками. u/d - перейти
  C-M-u  C-M-d      на верхний/нижний уровень
* C-c C-n  C-c C-p  Перемещение по препроцессорным условиям
  C-c C-u
* C-x-<SPC>         Точку в позицию, на которую указывает global ring
* C-u C-<SPC>       Точку в позицию, на которую указывает mark ring
* imenu             Точку к указанной defun
* Заметка:          Перемещение точки в позицию из регистра см. "Регистры"
############### Перемещение экрана #############################################
* M-v  C-v      Экран назад/вперёд. C-u задаёт кол-во линий
* C-l           Точка в центре, х2 - вверху, х3 - внизу
* C-x-=  C-x--  Увеличить/уменьшить текст (приблизить/отдалить экран)
* C-x-0         Восстановить стандартный размер шрифта
* Заметка:      Листание другого окна (см. Окна)
############### Поиск ##########################################################
* C-s  C-r                         Поиск вперёд/назад
* C-M-s  C-M-r                     Поиск вперёд/назад регулярками
* M-p  M-n                         История поиска
* M-%		                   Поиск с заменой
* multi-occur-in-matching-buffers  Создаёт список совпадений с regex в буферах
                                   совпадающих с regexname
* C-h-h                            Во время поиска - справка по поиску
############### Выделение ######################################################
* C-<SPC>           Метка. Второй C-<SPC> деактивирует метку.
* C-x <SPC>         Установить прямоугольную метку
* C-x-x             Поменять местами метку и точку
* M-@               Пометить слово
* C-M-@             Пометить сбалансированное выражение
* C-M-h             Пометить defun
* C-x h             Пометить весь буфер
* Shift-selection
* M-Drag-Mouse-1    Вторичное выделение, выделение не помещается в kill ring
* M-Mouse-1         Первая точка для вторичного выделения
* M-Mouse-3         Вторая точка, выделение помещается в kill ring
############### Удаление без сохранения ########################################
* <DEL>                        Удалить предыдущий символ или регион
* <Delete>                     Удалить следующий символ или регион
* C-d                          Удалить следующий символ
* C-x r d                      Удалить регион-прямоугольник
* M-\                          Удалить табы и пробелы вокруг точки
* M-<SPC>                      Удалить табы и пробелы вокруг точки оставив
                               один пробел
* C-x-o                        Удалить пустые строки за текущей строкой
* M-^                          Объединить текущую и предыдущую строки
* C-c <DEL>  C-c-d             Удалить пробелы до/после точки
* delete-trailing-whitespace   Удалить пробелы в конце строк
* delete-whitespace-rectangle  Удалить пробелы в начале прямоугольника
############### Удаление с сохранением и копирование ###########################
* C-k               Убить линию до '\n'
* C-S-<DEL>         Убить линию вместь с '\n'
* M-d               Убить вперёд до конца слова
* M-<DEL>           Убить назад до конца слова
* C-w               Убить регион
* C-x r k           Убить регион-прямоугольник (сохранение не в kill ring)
* M-w               Копировать регион
* C-x r M-w         Копировать регон-прямоугольник (не в kill ring)
* C-M-k             Убить сбалансированное выражение
* M-z               Убить до заданного символа включительно
* C-M-w             Последующие kill команды добавляют текст в последнюю ячейку
                    kill ring
############### Вставка ########################################################
* C-y                      Вставка из kill ring. С префиксом точка не
                           сдвигается (C-u C-y). Числовой префикс сдвигает
                           указатель kill ring (C-u 2 C-y)
* C-x r y                  Вставка последнего убитого прямоугольного региона
* M-y                      Замена вставки следующим вариантом из kill ring
* C-m                      <ENTER>
* C-o                      Вставка '\n' после точки, можно с fill prefix
* C-x r o                  Заполнение прямоугольника пустотой, прежние
                           символы выталкиваются вправо
* C-x r N                  Нумерация строк в прямоугольнике. При вызове с
                           C-u можно задать начальнцй номер и формат
* C-j                      <RET> но без <TAB>
* M-;                      Вставить комментарий, с C-u убивает.
                           Рас/закомментировать регион
* M-j                      Продолжить комментирий на следующей строке.
* C-c C-\                  Вставить и выровнять \ в конце региона
* string-insert-rectangle  Вставка заданной строку в каждую линию
                           прямоугольника с вытеснением вправо
* M-Mouse-2                Вставка вторичного выделения
* Заметка:                 Команды по вставке из "Буфера", "Файлы" и "Регистры"
############################ Замена текста #####################################
* C-x r c   Затереть прямоугольник пробелами
* C-x r t   Заменить каждую линию прям-ка на заданную  строку
* Заметка:  Вставка в буфер с затиранием см. "Буфера"
######################### Числовой аргумент ####################################
* M-{num}
* C-u {num}       По умолчанию num == 4. C-u C-u num == 16 и т.д.
* M-{num} C-u 2   C-u отделяет num от 2. Аналогично: C-u {num} C-u 2
############################ Регистры ##########################################
* view-register         Просмотр содержимого регистраа
* C-x r <SPC> R         Записать в регистр R текущее положение точки
* C-x r w               Сохранить в регистр конфигурации окон фрейма
* C-x r f               Сохранить в регистр конфигурации всех фреймов
* C-x C-k x             Сохранить последний макрос в регистре
* C-x r j               Переместить точку в позицию записанную в регистре или
                        восстановить конфигурац окон/фреймов или запуск макроса
* C-x r s               Копировать регион в регистр. С C-u регион вырезается
* C-x r r               Копировать прямоугольник в регистр. С C-u вырезается
* C-x r i               Вставить текст из регистра. С C-u точка перносится
* C-u N C-x r n         Сохранить число N в регистр, без префикса сохраняется 0
* C-x r +               Если в регистре текст, то аналог append-to-register.
                        Если число, то оно инкрементируется (C-u 2 C-x r + на 2)
* append-to-register    С C-u текст из буфера вырезается
* prepend-to-register   С C-u текст из буфера вырезается
########################### Поменять местами ###################################
* C-t       Поменять местами два символа
* M-t       Поменять местами два слова
* C-M-t     Поменять местами два сбалансированных выражения
* C-x C-t   Поменять местами две строки
* C-u 0     Будет выполнено перемещение объекта после метки с объектом после
            точки
################################# Макросы ######################################
* <F3>                  Запись макроса. Нажатие при записи - вставка счётчика
                        макрсоа с последующей инкрементацией. C-u задаёт
                        инкремент, C-u <F3> == счётчик не инкрементируется
* <F4>                  Закончить запсь или вызвать головной макрос. C-u 0
                        запустит бесконечный цикл до отмены или ошибки
* C-u <F3>              Дописать макрос предварительно исполнив начальную часть
* C-u C-u <F3>	        Дописать макрос без исполнения начальной части
* C-x C-k r             Выполнить макрос на каждой строке региона
* C-x C-k C-k           Вызвать головной макрос
* C-x C-k C-n           Переместить указатель вершины буфера макросов вперёд
* C-x C-k C-p           Переместить указатель вершины буфера макросов назад
* Заметка:              После C-x C-k [C-k|C-n|C-p] следующие команды можно
                        вызывать без префикса: C-x C-k C-k C-n C-p
* C-x C-k C-i           Вставка счётчика++ макроса, работает и за его пределами
* C-x C-k C-c           Установить значение счётчика головного макроса. С C-u
                        префиксом в теле макрса, присвоит значение == значение
			при запуске макроса
* C-x C-k C-a           Прибавить к счётчику головного макроса
* C-x q                 Установить в макросе запрос на продолжение. С C-u
                        создаёт вход в рекурсиный уровень
* C-x C-k n             Назначить имя последнему макросу
* C-x C-k b             Назначить макросу сочетание клавиш. Для этого зарезерви-
                        рованы диапазоны: от C-x C-k 0 до C-x C-k 9 и от C-x C-k
                        A до C-x C-k Z (C-x C-k b 4 назначит на C-x C-k 4)
* M-x insert-kbd-macro  Сохранить макрос в файл, если с C-u, то сохраняется и
                        сочетание клавиш для вызова этого макроса. load-file
                        загрузит сохранённый макрос
* C-x C-k C-e
  C-x C-k e             Редактор макросов, последнего / с указанным именем
* C-x C-k <SPC>         Пошаговое выполнение с возможностью редактирования
################################### Файлы ######################################
* C-x C-f         Посетить файл
* C-x C-r         Посеть файл в режиме "для чтения"
* C-x C-v         Посетить файл, заместить им текущий буфер
* C-x 4 f         Посетить файл в другом окне
* C-x C-s         Сохранить текущий буфер
* C-x s           Сохранить все или выбранные буфера
* M-~             Пометить буфер как "неизменённый", с C-u пометит как "изменённый"
* C-x C-w         Сохранить буфер в другой файл
* append-to-file  Добавить регион в указанный файл
################################## Буфера ######################################
* C-x b                  Выбрать или создать буфер
* C-x 4 b                Выбрать или создать буфер в другом окне
* C-x <LEFT>
  C-x <RIGHT>            Выбрать предыдущий / следующий буфер
* C-x C-b                Список буферов. С C-u перечислит только посетившие файл
* C-x C-q                Переключить атрибут "только для чтения"
* C-x k                  Закрыть буфер
* kill-some-buffers      Предложение закрыть для каждого буфера
* kill-matching-buffers  Закрыть буфера совпадающие с регуляркой
* rename-uniquely        Добавит число к имени
* append-to-buffer       Добавить регион в указанный буфер до точки
* prepend-to-buffer      Добавить регион в указанный буфер после точки
* copy-to-buffer         Вставить регион в указанный буфер с затиранием
* insert-buffer          Вставка в текущий буфер из указанного буфера
#################################### Окна ######################################
* C-x 2    Разделить окно горизонтально. Положительный префикс задёт кол-во
           строк у верхнего окна, отрицательный - у нижнего
* C-x 3    Разделить вертикально. Положительный префикс - ширина левого,
           отрицательный - правого
* C-x o    Активировать другое окно
* C-M-v
  C-M-S-v  Листать другое окно
############################### Фолдинг #######################################
* C-c @ C-h    Свернуть текущий блок
* C-c @ C-s    Развернуть текущий блок
* C-c @ C-c    Переключить режим отображения текущего блока
* C-c @ C-M-h  Скрыть все блоки верхнего уровня
* C-c @ C-M-s  Развернуть все блоки буфера
* C-c @ C-l    Свернуть блоки на заданной глубине от текущего
############################# Разное ###########################################
* C-/                         Undo, отмена действия. Если выделен регион, то
                              отеняются действия сделанные внутри региона
* С-/ С-f С-/                 Redo (отмена отмены), C-f -любая команда
* C-x z                       Повторить предыдущую команду, дальнейшее нажатие z
                              вновь инициирует повтор
* C-q                         Вставка экранированного символа
* bookmarks                   Не команда
* C-r  C-M-c  C-]             Рекурсия / выход из рекурсии / прервать вместе с
                              операциеей верхнего уровня
* C-x =                       Информация о символе после точки, с C-u подробно
* C-h S                       Поиск документации в info
* man                         Поиск документации в man
* compile
  recompile
  kill-compilation

Краткой версии найти не удалось, сделал свою

Простыню. Тут есть вики - лучше туда запость.

################################## Буфера ######################################

Ничо так буфера, широкие.

no-such-file ★★★★★ ()

Плохо, негодно, к плохому приучаете. Надо так:

* Перемещение точки
  |-----------------------------------------+-----------------------|
  | previous-line/next-line                 | Вверх/Вниз            |
  | backward-char/forward-char              | Влево/Вправо          |
  | forward-word/backward-word              | На слово вперёд/назад |
  | move-beginning-of-line/move-end-of-line | Начало/конец строки   |

etc. А далее man define-key и клепайте что для ваших тентакл^W пальцев удобнее.

ados ★★★★★ ()

как раз недавно простыни стирал

anonymous ()

И да, это всё не надо, когда есть helm и which-key-mode.

no-such-file ★★★★★ ()

Родная документация хороша, но очень многословна и информация размазана. Краткой версии найти не удалось, сделал свою.

Да ты что? Emacs Quick Reference — официальная документация. :)

https://www.gnu.org/software/emacs/refcards/pdf/ru-refcard.pdf

https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)

базовые вещи

После нескольких лет разработки в емаксе, я не знаю большую часть этой простыни.
И, в принципе, желания знать нет. Совсем необходимо уметь хорошо жонглировать курсором, а дальше двигаться по потребностям.
Всякие хитровыделанные команды гораздо проще запускать из минибуфера. Их легче запомнить по имени, чем по бесконечной последовательности хоткеев.

Регистры вообще сбоку прикрутили для тех, кого раздражает kill-ring. Проще поставить browse-kill-ring на хоткей, чем использовать параллельно этот конкурирующий механизм.

aidaho ★★★★★ ()
Последнее исправление: aidaho (всего исправлений: 1)

это для рук или для ног?

slon ()

Зря накинулись на человека, молодец что сделал (пускай и большая часть простыни менее полезна, чем предполагал автор).

Я как-то для сотрудников тоже делал шпаргалку для эмакса, в латехе. http://bytopia.org/2015/11/01/beautiful-cheatsheet-template-in/

unlog1c ★★★ ()
Ответ на: комментарий от no-such-file

И да, это всё не надо, когда есть helm и which-key-mode

А можно сделать так, чтобы подсказки для сочетаний клавиш, показывались не в буфере, а в сплывающем окне, например, как в company mode?

pol01 ()
Ответ на: комментарий от pol01

Теоретически можно, если ты сам допилишь which-key-custom-show-popup-function и which-key-custom-hide-popup-function. Может будет достаточно, чтобы popup окно показывалось сбоку? Такое есть из коробки.

no-such-file ★★★★★ ()

мне кажется вы как-то не так используете Emacs. это же поедешь пока всё это запомнишь

Debasher ★★★★★ ()
Ответ на: комментарий от no-such-file

Показывать сбоку — это я настроил.

А всплывающее окошко с сочетаниями клавиш, как в company — это было бы красиво.

pol01 ()

Долго пытался привыкнуть - в итоге перебиндил наверное добрую половину из списка.

Kostafey ()
Ответ на: комментарий от pol01

А всплывающее окошко с сочетаниями клавиш, как в company — это было бы красиво.

Ага, особенно красиво, когда сработает и автодополнение. Как ты себе это вообще представляешь - два окошка сразу?

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Я нажал C-x или С-с. Никаких букв не вводил. 1. Как сработает автодополнение? 2. Почему сейчас автодополнение не срабатывает?

pol01 ()
Ответ на: комментарий от pol01

Никаких букв не вводил

А если вводил? Набрал начало текста, хочешь вставить что-то из регистра, наживаешь C-x r ждешь чтобы увидеть подсказку по клавишам и тут срабатывает автодополнение. Ну и куда девать подсказку по клавишам?

Почему сейчас автодополнение не срабатывает

Отлично срабатывает, во всяком случае ac-mode.

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Отлично срабатывает, во всяком случае ac-mode.

Тогда что мешает рядом с окошком автодополнения открыть еще одно с перечнем возможных сочетаний клавиш?

pol01 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.