Комментарии 37
Emacs - это целая операционная система, в которой не хватает только текстового редактора ))
Там есть любой текстовый редактор, хватит уже эту чушь постить.
Шутка была в том, что не хватает хорошего текстового редактора. (Сам пользуюсь Emacs уже лет 20).
не хватает хорошего текстового редактора
Нужно просто запустить в emacs терминал и в нем запустить vim.
В Emacs есть https://github.com/emacs-evil/evil.
https://github.com/doomemacs/doomemacs комбо
Если пользуетесь сами, расскажите как давно, впечатления, для чего, остаются ли рядом вимы...
как давно
Лет пять минимум, судя по репе с .dotfiles. Возможно, дольше. До этого какое-то время был spacemacs, до этого уже не помню.
впечатления
Не без своих проблем, но нужно понимать, что это проект практически одного автора и это bleeding edge. Если не ждать вечной стабильности, то и разочарований не будет.
для чего
Практически для всего, это для меня ключевой инструмент. Основные вещи - это
- организация: org-mode + база знаний через org-roam
- разработка: magit, разнообразные языки (в последнее время через tree-sitter режимы)
Это всё с evil-mode, который для меня является лучшим вимом, чем сам вим.
остаются ли рядом вимы
На локальной машине - отредактировать что-то под рутом, это может быть быстрее, чем открывать в емаксе в tramp. На удалённых серверах vim всегда основной редактор. Мышечная память работает везде. Поэтому, допустим, helix мне не зашёл, он ломает привычные схемы использования.
По моему мнению ценность вима - в концепции: модальность + логичные мнемонические последовательности кнопок (очень легко запомнить, что dw - это Delete Word, и очень легко сделать вывод, что Change Word - это cw). Реализовать эту концепцию можно поверх разных платформ. Emacs - вполне хороший вариант для такой базовой платформы.
На удалённых серверах vim всегда основной редактор.
А чем тот же tramp не устраивает?
Хожу на них через ssh из терминала. Когда уже там, проще запустить vim на месте, чем на локальной машине открывать нужный файл через tramp. Т.е. сперва шелл на серваке, потом редактирование. А так, чтобы понадобилось именно редактировать что-то удалённо в больших объёмах, у меня не бывает. Для такого лучше либо редактировать локально и переправлять на сервак через git, либо полноценный провижен (я использую mitamae).
tramp помимо тормозов на полную прокачку всего сильно гадит в bash history огроменными промптами
У меня он там следов не оставляет, хотя вроде ничего специально не делал. Или имеется в виду история на локальной машине (у меня это винда, коннект в трампе через plink)?
он гадит таким
exec env TERM='dumb' INSIDE_EMACS='29.1,tramp:2.6.0.29.1' ENV='' HISTFILE=/dev/null PROMPT_COMMAND='' PS1=///27d33a9e802653d2a0b3915807e8b3a1#$ PS2='' PS3='' /bin/sh -
я после 10 лет vim в 2015 году перебрался на emacs ради его org-mode и полностью обмазал emacs evil-mode + evil-leader на клавише space. В итоге у меня бесшовное переключение между emacs/vim на удалённых серверах/vs code + vim plugin и это очень комфортно. Я в том числе использовал spacemacs и doomemacs конфигурации как источник вдохновения по настройкам и в итоге спустя 100500 итераций получил самое комфортное конкретно мне.
Emacs заменил почти всё, но ide-фичи я в итоге ем из IDE, чтобы не тратить время на подпилы, хотя LSP/Eglot сейчас стали очень продвинутыми и возможно IDE почти уже не нужны.
Vim достаётся только в случаях необходимости поредактировать/пофильтровать файл в гигабайт и выше - тут его скорость вне конкуренции. Кстати, терминал vterm в emacs удобен тем, что он как и всё в Emacs может расширяться и у меня прикручены сниппеты по быстрой вставке в сессию конфигов bash/vim/tmux/алиасы и я на любой новой машине в пару кликов получаю привычные мне минимальные конфиги
Viper там был в комплекте ещё в дремучие времена.
https://github.com/termux/termux-widget не оно?
Внешняя маленькая клавиатура Bluetooth
Очень интересное решение, спасибо, я думал о разработке чего-то подобного, рад что теперь можно адаптировать этот подход. Интересно, работает ли внутри емакса, который внутри termux сложные штуки такие как emacs-jabber или erc или этот подход годится только для org-заметок?
Не сталкивался с тем, что что-нибудь не работает в Emacs, но за все конечно не скажу, Emacs неисчерпаем.
Если функциональность написана на Emacs Lisp - то да, если не работает, надо просто правильно сконфигурировать или переписать под себя ) Но с системным уровнем бывают проблемы - при каком-то сочетании версий винды и Emacs клавиша Windows (использую как Hyper) никак не прокидывалась в Emacs, так что с рабочего ноута обычно заходил на линуксовую машинку под vnc и работал там. Сейчас w32-pass-lwindow-to-system работает, вернулся к использованию локального виндового Emacs и tramp для удалённого редактирования/компиляции.
Для примера скриншот с мобильника с Yadirmenu
Похоже, вдохновлялись интерфейсом make menuconfig )
Использовать гит для синхронизации заметок это немного как из пушки по воробьям. Есть rsync, вроде был bittorrent sync. гугл диск и дропбокс, в конце концов. С другой стороны, я понимаю, что если ты не знаешь молотки, но специалист по микроскопам, гвоздь можно и микроскопом забить.
Куда интереснее узнать у автора, почему termux, а не нативный порт еmacs под андройд? Тот же просмотр и редактирование орг файлов там достаточно удобный.
Насчет Git: кому-то будет удобнее rsync или Dropbox, у меня получается удобнее с Git. Обосную:
Система заметок, это часть моего рабочего окружения, в нем на сегодня примерно 14 проектов, это мои проектты, конфигурации, насторойки и т.д., все ведутся в Git. Поэтому мне удобнее добавить еще один проект (заметки) в мое рабочее окружение, чем испольовать что-то другое.
В моем рабочем окружении есть скрипт, который проверяет проекты, сделаны ли локальные коммиты, и нет ли нескачанных на локальную систему коммитов в удаленных репозиториях (Часть на моем хостинге, часть в GitHub). Список репозиториев уникален для рабочей станции. Сев за другую рабочую станцию я запускаю скрипт, он мне показывает картинку, где сделать pull, где commit/push. Сделав это я готов к работе и уверен, что ничего не забыто.
Почему Termux, а не порт Emacs под Android:
Хочется иметь более-менее одинаковое рабочее окружение как на Linux так и на Android.
Под Termux могу более-менее использовать те же самые скрипты, настройки и софт. Тот же SSH.
Личное мнение. Мне нравится консольный интерфейс. Он позволяет малой кровью создавать гибкие и удобные системы и системочки под себя.
Где-то так. Спасибо за вопрос, кстати!
На android есть еще orgzly, он даже сам через webdav синкаться умеет. Но я один раз засинкал случайно стертую заметку и больше так не хочу.
На телефоне сейчас MGit, там тапать для синхронизации приходится чуть больше. Удобнее было бы как в GitJournal – делает коммит-пулл-пуш по одной кнопке. Я бы использовал его вместо MGit, но в современных андроидах он пока не научился держать файлы репозитория снаружи своей песочницы.
org-mode фантастически расширяем, поэтому про замены emacs на pc не думаю. refile, org-roam, agenda, org-super-agenda, org-ql, vulpea и пр., а так же легкость, с которой можно перегрузить любую функцию прямо у себя в конфиге благодаря лиспу.
Единственное, тормозит он под win конечно. А запустить его с графикой под WSL у меня пока не получилось.
Использую для заметок obsidian. Для синхронизации с гитом сделал так: в термукс сделал скрипт-шорткат(который виджетом можно вынести на рабочий стол), в нем настроил синхронизацию внешнего хранилища заметок с термуксовой песочницей, а затем коммит-пул-пуш. В итоге после каких либо изменений в заметках, просто щелеаю по виджету и оно сливается в гитею. Хрень, конечно, но работает:)
Я долго перебирал всякие варианты на мобилах и каждый из них упирается в отсутствие поддержки GPG, а у меня всё закрыто им во избежание возможных неловкостей. Тут получается, что свой сервер VDS, на который я могу зайти по SSH выглядит самым эффективным способом работы с кучи устройств без граблей синхронизации и со всеми фичами. Мелкой bluetooth-клавиатуры должно быть достаточно для мобильного использования, но всё равно будет очень сильно жать, поскольку модификаторы Meta/Super/Ctrl я использую в полный рост, а андроид не даёт их пользовать с клавиатур. Ситуацию сильно облегчает то, что у меня большинство функционала на evil + evil-leader с space как leader и комбинациями вроде spc m m, но на Meta всё равно очень многое висит и нарушенные клавиатурные привычки сильно бесят.
Когда мне нужно было переключаться между разными машинами, то я пришёл к yandex-disk + git и регулярный бэкап этого через borgbackup по cron. Получалось достаточно удачно. А потом я перешёл на один единственный ноутбук для всего и мне стало хватать git и borgbackup. А в качестве inbox у меня письма самому себе в gmail - очень быстро накликать с любого устройства на ходу и легко поддерживать непрочитанным необработанное.
Подумываю приделать в таймер регенерацию агенды в час ночи и засылку её себе в почту для утреннего моциона
Я долго перебирал всякие варианты на мобилах и каждый из них упирается в отсутствие поддержки GPG
Вот этим их хорош вариантс Termux, GPG там вполне себе есть, так же как и многое другое.
с termux мне больно из-за обрезков комбинаций meta/super даже на внешней клавиатуре. Хотя, подозреваю, что классический emacs way с C-f и C-b работают хорошо :)
Открытие .gpg файла в Termux
В одном из файлов системы у меня хранятся пароли. Файл зашифрован при помощи GPG. Все работает, одна проблема, при открытии файла .gpg почти невозможно ввести пароль. Чтобы ввести один символ клавишу нужно нажимать раз 5, а то и больше. Учитывая то, что при вводе паролей символы не отображаются на терминале, задача становится нетривиальной.
Решил проблему.
(require 'epa-file)
(epa-file-enable)
(setq epa-pinentry-mode 'loopback)
Тепреь пароль вводится не в терминале, а в минибуфере Emacs. В минибуфере все работает отлично.
собираю сейчас схожее решение, но без termux, с нативным ведроидным Emacs и с denote
Могу порекомендовать на ведроиды клавиатуру Unexpected keyboard с f-droid. Пользую более года. Впечатления целиком положительные
Orgro так же доступен на f-droid
Orgzly revived - не полноценная замена, но как лёгкий блокнот - неплох
Заметки на Emacs/Linux/Android