воскресенье, 7 июля 2013 г.

Основы работы с emacs

Это консольный текстовый редактор, который позволяет:
- читать и отправлять почту;
- компилировать код;
- открывать subshell в виде даба для кокой-нибудь итерпретации кода.

Запустисть емакс без X11(не создавать графический фрейм, если запускаем  emacs из xterm окна, емакс отображается в том же окне) (-nw, --no-window-system) и любой кастомизации (-Q):
emacs -nw -Q


^h, t - запустить туториал
^t, a - поиск по патерну комманды
^h, f - описывает указанную функцию лиспа
^h k - узнать информацию о конкретной комбинации клавиш 

^x ^c - quit
^x ^f - read a file into Emacs
^x ^s - save the file to disk
^x s - save all files

^v - прокрутить файл на высоту терминала вперед
alt+v - прокрутить файл на высоту терминала назад
^l - перерисовать терминал и курсор с строкой, на которой он стоял окажется по средине терминала, если мы еще раз нажмем, то курсор окажется в верху терминала со своей строкой, если еще раз - то вконце.

^p - переместить каретку на строку вверх
^n - переместить каретку на строку сниз
^f - переместить каретку на символ вперед
^b - на символ назад
alt+f - на слово вперед
alt+b - на слово назад
^a - в начало строки
^e - в конец строки
alt+a - в начало предложения
alt+b - в конец предложения

alt+<(shift+,) перейти в начало всего текста
alt+>(shift+.) перейти в конец всего текста

Передвижение с указанным повторением раз:
^u  
^u 3 alt+f- передвинуться на 3 слова вперед
^u 5 ^p- передвинуться на 5 строк вверх
также более быстры вариант, но который работает не на всех терминалах:
alt+

^g - выйти из доглоиграющей команды емакс; а также если мы начали вводить команду из состоящую из нескольких комбинаций, это способ отмены на полпути

Окна
Или табы.
^x 1 - уничтожить все окна и оставить только первое

Мульти-ввод
Таже идея что и с передвижением, но тут только в уствкой символов.
Чтобы получить например 12 звездочек подряд мы вводим:
^u 12 * - получаем ************

<ret> удалить символ до каретки
^d удалить символ после каретки
alt+<ret> удалить слово до каретки
alt+d удалить слово после каретки
^k кильнуть(вырезать) от каретки до конца строки
alt+k кильнуть(вырезать) от каретки до начала строки

^space начать выделять текст, выделяется он комбинациями премещения курсора(каретки)
^w удалить "убитый" текст
^y заянковать "убитый" текст(вставить вырезанный текст), самый последний вырезанный
^y alt+y вставить более ранне вырезанный текст. После того как мы заянкили кильнутый текст, нажимая альт-янк, мы будем менять вставленный текст на ранее вырезанный, так нажимая несколько раз мы вернемся к нужному вырезанному тексту.

^u NUM ^y - передвинуться сразу назад на NUM, и не нужно нажимать несколько раз alt+y

Когда мы вырезаем текст(^k) на его месте все еще остается пустая строка, если мы еще раз нажимаем ^k, то пропадает и пустая строка, но кроме этого это включает режим дополнения вырезанного текста -- если мы еще будем вырезать так строки, то они все вырезаны со своими пустыми строками будут считаться одним выризанием, и заянкуем мы все эти строки одним нажатием вставить.

^/ или ^_(shift+-) или ^x u - Undo, отмена редакции

Работа с файлами

^x ^f - найти(открыть) файл

Линия внизу емакс когда мы туда вводим имя файла для открытия, в этом контексте называется минибуффер(^g - отмена ввода).

Когда мы сохраняем файл ^x ^s, то файл сохранятся с именем оригинала, но с нашими изменениями, но при этом сам оригинал тоже не теряется он сохраняется после этого в файле с именем ~.

Последующее открытие файлов, не теряет текущий, все открытые файлы находятся в буферах(обьект buffer), и мы можем между ними переходить:
^x ^b - список буфферов
^x 1 - скрыть список буфферов, это вообще-то удаляет все кроме одного окна, которые разделяют табы на фреймы.
^x b - открыть нужный буффер, введя его имя(автозаполнение работает)
Кстати среди списка буферов, находятся не все которые представляют файлы. Например *Messages* представляют буфер, который хранит ссобщения, что нам выводились, а *Completions* списки для выбора автокомплита, которые нам выводились.

^x s - емакс выведет подтверждение для каждого файла, который мы изменили и мы можем выбрать какой файл сохранять, а какой нет.

Команды с короткими именами и команды с длинными именами
команды вида ^x ... ожидают введениее одного символа для выполнения команды. Это символьные.
alt+... - ожидают введение длинного имени. Это именные команды, для них действует автокомплит по табу.

alt+x replace-string - ожидает два аргумента, заменивает все строки после позиции каретки предложенными.

Автосохранение
Емакс делает автосохранение и рядом с оригиналами появляются файлы #original.txt#, если мы крешимся и не успеваем сохраниться, можно сосстановиться из автосохранения, либо вручную, либо в емаке, открыв файл и введя alt+x recover-file. После сохранения эти файлы автосейвов удаляются из диска и появляются через определенный период, потом снова удаляются, если мы сами сохраняемся.

Участки терминала
Место где появляются подсказки нажатых комбинаций и куда мы вводим именные команды называется echo area.
Mode line - участок терминала, где дается информация о редактируемом файле и режиме емакс.
-=--:**--F1  TUTORIAL       63% L730   (Fundamental) ----

1) ** - означают, что в файле есть несохраненные изменения
2) L730, что картка находится на 730 строке, и что это 63% от всего файла.
3) (Fundamental) - тут отображается режим редактирования, major-mode, Fundamental по-умолчанию, бывают также: Lisp mode, Text mode, etc.
Моды отличаются командами - в разных языках по разному коментируются строки кода, это команды тоже отличаются, переходить в мод тоже есть конкертные комманды. alt+x fundamental - способ перейти в дефолтный мод:)
alt+x text-mode - перейти в текстовый режим, отиличие, что апострофы и символы после них считаются одним словом с предыдущим текстом.
^h m - получить информацию о текущем моде
Кроме мажорных модов бывают еще и minor-mode, они откличаются маленькими правками и их можно подключать к мажорному моду, всегде может быть включен один мажорный мод и сколько угодно минорных.
Для текстового мода полезный alt+x auto-fill-mode, он делает перевод строки на новую, если она не помещается в терминале, в строку вставляется именно символ конца строки. Если ввести снова эту комманду, то мы отключим этот режим. Разрыв наступает после ввода 70 символов. Чтобы поменять количество символов до разрыва, ^x f <NUM>, можно ввести сразу ^u 20 ^x f. Факт того, что мы переключили количество символов в строке, не означает, что у нас переформатируется ввесь текст файла, все последующие да, или же мы можем стать кареткой на како-нибудь параграф и нажать alt+q.

Поиск
^s -  начать инкрементный поиск от каретки и вниз. В эхо ерии появиться "I-search:", потом когда мы вводим символы по мере подхождения отдельных слов, они будут выделяется в тексте, и вводя следующий символ, можно будет заметить как количвество выделенных уменьшается. Если мы еще нажимаем ^s, то мы будем двигаться по выделенным словам "поточным веделением". Если нажимать <Ret>, то мы будем возвращаться по словам. Если же мы еще не двигались вперед, или вернулись к первому в поиске слову, то нажимая  <Ret&gt, мы будем удалять последние символы слова поиска, и количество подошедших слов снова начнет расти.

^r - начать поиск от каретки и вверх. Все что касается ^s касается и ^r.


Множественные окна
^x 2 - разделить терминал на два горизонтальных окна.
^+alt+v - проскролить окно, которое в текущий момент без фокуса
^x o - переместить фокус на другое окно.
^x 1 - оставит только одно окно, в котором в момент нажатия находится курсор.
^x 4 ^f - начать искать файл для неактивного окна, если не вводить ничего в эхо строке, а нанажать <Enter>, то у нас появится списко файлов во втором окне и мы можем выбрать необходимый файл, выделить его имя и нажать <Enter>, так мы его откроем.


Множественные фреймы
Как я понял, фреймы это графические окна, в которых открывается терминал.
^x make-frame <Enter> - как я понял откроет новое графическое окно с терминалом, а в нем будет запущен емакс.
^x delete-frame <Enter> - закроет фрейм

Recursive editing level
Как  я понял это режим, когда мы вводим длинные команды. Его можно заметить по квадратным скобкам вокрут имени мажорного мода [(Fundamental)], я пока такого не замечал.
Чтобы из него выбраться нужно нажать <ESC> <ESC> <ESC>, или ^g.

Получение помощи
^h c [hot_keys_comb_OR_command] - краткое описание
^h k [hot_keys_comb_OR_command] - полное описание
^h f [function] - описывает значение по имени функции(лисп), которая привязана к какой-то комбинации
^h v [varibale_name] - описать значение переменной, такие переменные например используеются для настройки редактора.
^h a [keyword] - вводится ключевое слово, в ответ выводятся все команды, которые могут касаться этого слова.
^h i  это команда очень важная в хелпах, read included Manuals (a.k.a. Info). Мы переходим в специальный буфер *info*, где можно почитать мануалы для пакетов, установленных на нашей системе.
Когда мы попадаем в *info* там мир своих команд.
нажимаем "m" (menu) и можем ввести имя утилиты командной строки:)








Комментариев нет:

Отправить комментарий