LINUX.ORG.RU

Emacs в терминале, отличия разных терминалов, перенастройка клавиш и цветовой схемы

 , ,


0

0

В этом треде я буду осваивать запуск Emacs в терминале, чтобы впоследствии назначить его в свой $EDITOR.

Препоны заключаются в том, что

  • когда емакс запускается в терминале, это оказывается завязано на ту палитру, которая доступна конкретному эмулятору терминала, нужно этот бордель как-то унифицировать;
  • опять же, в зависимости от типа эмулятора терминала одни сочетания клавиш в емаксе работают, другие — нет.

Цвета, заданные через font-lock, вроде бы те же, но после того, как я поставил, а затем удалил color-theme, в иксах всё слетело, а в консольке осталось почти как и было. «Почти», потому что default face в емаксе — довольно странная штука, он как бы есть, а как бы и нет. Попробуйте в scratch буфере поставить курсор на последнюю, пустую строчку и сделать M-x describe-face — емакс послушно откроет в соседнем окне описание некоего default (nil) face. Однако, то, что он показывает там, не совсем кореллирует с тем, что находится в буфере, как, впрочем, и с тем, что в его же, емаксовых настройках. Причём, если пройти по ссылке ‘customize face’ из окна, которое вызвано describe face (как на первом скриншоте), то вас выкинет вовсе не в подменю кастомизации basic faces group а в какое-то наспех скомпонованое, которое находится вне какой-либо группы(!) и состоит из надёрганных элементов, которые названиями переклюкаются с элементами basic faces group, но у меня есть сомнения насчёт того, одни и те же ли элементы там предлагается настроить. И самая мякотка — если вместо M-x describe-face в том же scratch буфере попросить сразу M-x customize-face, емакс откроет… пустое меню! Вот такой бардак во всей емаксовой красе.

Что меня интересовало изначально — это почему цвет фона в емаксе каждый раз разный в новом терминале. Тут надо упомянуть о том, что цвет для background емаксу можно задать через опцию -bg, сначала создалось впечатление, что без неё он в терминале просто проигнорирует настройки default face из font-lock и бекграунд вместе с ним, но оно оказалось ложным, -bg имеет влияние, но в пределах палитры. Вот несколько экспериментов:

Копаясь в емаксодоках и на tldp я смог только узнать, что приложения определяют возможности терминала по переменной TERM, и что описания возможностей этих классифицированы и доступны в /usr/lib/terminfo/, но так просто их не открыть — они бинарные.

Пришло время задать вопросы, как же всё-таки задать цветовую схему так, чтобы она действовала и в терминале? Вроде как понятно, что емакс в терминале зависит от его палитры (об этом вам скажет M-x set-background-face во всё том же scratch буфере, если вы попытаетесь в качестве цвета задать #RRGGBB значение, которого в ней нет), однако, непонятно, где найти соответствие faces номерам цветов из этой палитры.

Как узнать, почему C-, не работает в urxvt? По идее, это должно быть написано в terminfo, но я, видимо, не умею их читать. По крайней мере, C-, я там не нашёл. В любом случае надо как-то выяснить, почему хоткей не работает, сколько их таких, и перебиндить повешенные на них команды от греха подальше³. Если начинать перебиндивать, то я хочу режим, суть такова: жмёшь комбинацию, например C-r, она выполняет функцию, которая читает ввод с клавиатуры и четыре клавиши в этом режиме могут менять размеры активного окна, по энтеру выход. А ещё лучше научите меня писать функции на такие режимы (ох щи, я же делаю из емакса vim)

Где я уже был:
http://emacswiki.org/emacs/ColorTheme
http://www.gnu.org/software/emacs/manual/html_node/emacs/Display.html
http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-11.html
/usr/share/doc/rxvt-unicode-9.15/rxvt-unicode.term*.bz2
https://github.com/sellout/emacs-color-theme-solarized/blob/master/solarized-...

¹ Конечно же, это неправильно, но сам факт!
² Там должны быть прямые программистские кавычки, но кто-то либо очень тупой, либо глубоко заботящийся о тех, кто копипастит с форума в терминал, их поломал.
³ Кажется, я начинаю понимать, почему в емаксе всё через C-x, а не через прямые C-<a-z>.

Deleted

Последнее исправление: fargred (всего исправлений: 2)

Ответ на: комментарий от Deleted
;; conf/tramp
(setq tramp-default-method "ssh")
(add-to-list 'tramp-default-proxies-alist
               '(nil "\\`root\\'" "/ssh:%h:"))
(add-to-list 'tramp-default-proxies-alist
               '((regexp-quote (system-name)) nil nil))
lazyklimm ★★★★★
()
Ответ на: комментарий от Deleted

Где-где?

в GNU версии emacs, я думал из контекста будет ясно, не? И зачем тут шифт?

Ок, я-то на #usage сразу прыгнул.

ЯННП

lazyklimm ★★★★★
()
Ответ на: комментарий от Deleted

удобно постоянно переключаться между различными терминалами??
какой смысл открывать xterm, urxvt, gnome-terminal, и_ещё_5_называний_терминалов поочерёдно в разное время работы??

q11q11 ★★★★★
()
Ответ на: комментарий от lazyklimm

tramp кому придумали?

tramp для мазохистов

Он, конечно, работает кое-как с gvfs в качестве бекенда. Но в других случаях это просто капец

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

Он любит грохать файлы с которыми ты работаешь

не замечено

и засирать файловую систему черт знает чем

.emacs.s/tramp?

lazyklimm ★★★★★
()
Ответ на: комментарий от x4DA

Потыкал. Вроде работает. Даже быстро и с автодополнением. Странно, что я про него узнал только сейчас.

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

.emacs.s/tramp

И это в том числе. Но у меня он как-то засрал пол фс файлами с названиями как esc последовательности.

vasily_pupkin ★★★★★
()
Ответ на: комментарий от Deleted

Потыкал. Вроде работает. Даже быстро и с автодополнением.

а ещё чего-то умничал

lazyklimm ★★★★★
()
Ответ на: комментарий от Deleted

XEmacs is GNU software

я не про лицензию, а про название

Есть GNU/Emacs, есть xemacs, есть sxemacs итп

Не «умничал», а упирался.

а чего упирался-то, раз дельные вещи советовали?

lazyklimm ★★★★★
()
Ответ на: комментарий от vasily_pupkin

'(tramp-gvfs-methods (quote («dav» «davs» «obex» «synce» «sftp» «smb»)))

Я не силён в лиспе, но ни одну из этих хреней в кавычках я не использовал с трампом.

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

я не про лицензию, а про название

XEmacs — ответвление проекта GNU, следовательно, тоже проект GNU. Название тут не при чём.

а чего упирался-то, раз дельные вещи советовали?

Ты всем сразу на слово веришь?

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

Примерно тоже самое, только отваливается в случае чего прозрачно. В случае с емаксом лучше тем, что оный умеет его автоматически монтировать из коробки

vasily_pupkin ★★★★★
()
Ответ на: комментарий от Deleted

XEmacs — ответвление проекта GNU, следовательно, тоже проект GNU.

ORLY?

Ты всем сразу на слово веришь?

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

lazyklimm ★★★★★
()
Ответ на: комментарий от tailgunner

И чем он лучше sshfs

отваливание сети проще переносит

lazyklimm ★★★★★
()
Ответ на: комментарий от s9gf4ult

не, я стараюсь воркспейсы по задачам распределять, хотя, конечно, никто не мешает через dmenu вызвать буфер с нужным человеком

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

ORLY?

Ya, rly. Ты ведь не ходил по ссылке на хemacs.org, верно?

прежде чем в штыки.

Сначала всегда в штыки.

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

Ты ведь не ходил по ссылке на хemacs.org

я там бывал ещё давно и неоднократно

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