За удаление выделенного фрагмента при вводе нового текста отвечает:
Anonymous Quiz
44%
overwrite-mode
56%
delete-selection-mode
0%
read-only-mode
Давайте немного про
Вы можете включить режим
Поведение Emacs по умолчанию при работе с выделенным текстом отличается от других редакторов. Например, если вы выделите текст в VS Code, а потом введёте любой символ, то он заменит собой весь выделенный фрагмент. В Emacs выделение будет снято, а новый символ будет вставлен в текущей позиции курсора.
Режим
overwrite-mode
и delete-selection-mode
расскажу. Вижу, что эта тема не всем достаточно понятнаВы можете включить режим
overwrite-mode
, и в этом случае новые символы будут заменять уже стоящие в тех же позициях. Но на удаление выделенного фрагмента это не влияет.Поведение Emacs по умолчанию при работе с выделенным текстом отличается от других редакторов. Например, если вы выделите текст в VS Code, а потом введёте любой символ, то он заменит собой весь выделенный фрагмент. В Emacs выделение будет снято, а новый символ будет вставлен в текущей позиции курсора.
Режим
delete-selection-mode
включает в Emacs такое же поведение, как и в других редакторах — ввод нового символа приводит к замене выделенного фрагмента.This media is not supported in your browser
VIEW IN TELEGRAM
Демонстрация отличий
overwrite-mode
и delete-selection-mode
.👍8
Ничего себе!
https://elpa.gnu.org/devel/doc/company.html
company
дорос до версии 1.0.0! Кстати, я говорил, что он теперь под управлением проекта GNU?https://elpa.gnu.org/devel/doc/company.html
elpa.gnu.org
Company User Manual
Next: Overview [Contents]
🔥6
Курлык, и
Только у вас это не будет работать, пока не обновите
Теперь
UPDATE: уже вышел релиз
company
версии 1.0.1
вышел. Феноменальная скорость, конечно. Кстати, забыл написать, что настройки здорового человека выглядят так:;; 📦 COMPANY-MODE
;; https://company-mode.github.io/
;; Автодополнение
(use-package company
:ensure t
:vc (
:url "https://github.com/company-mode/company-mode.git"
:rev "1.0.1"
)
:delight ""
:demand t
:custom
(company-idle-delay 0.5 "Задержка вывода подсказки — полсекунды")
(company-minimum-prefix-length 2 "Минимум 2 знака, чтобы company начала работать")
(company-show-quick-access t "Показывать номера возле потенциальных кандидатов")
(company-tooltip-align-annotations t "Выровнять текст подсказки по правому краю")
(company-tooltip-limit 15 "Ограничение на число подсказок")
:hook
((css-mode
dockerfile-mode
emacs-lisp-mode
html-mode
latex-mode
lisp-data-mode
minibufer-mode
nxml-mode
org-mode
python-mode
rst-mode
ruby-mode
web-mode
) . company-mode)
:bind
(:map company-active-map
("TAB" . company-complete-common-or-cycle)
("M-/" . company-complete)
("M-." . company-show-location)))
Только у вас это не будет работать, пока не обновите
use-package
до версии 2.4.6, а также если в вашем Emacs нет пакета package-vc-install
. Кажется, его в версии 29 добавили? Но вы можете при определённых условиях обновить даже встроенные пакеты. Нужно всего лишь на время задать для переменной package-install-upgrade-built-in
значение t
:(customize-set-variable 'package-install-upgrade-built-in t)
Теперь
package-lisp-packages
"увидит" обновления для встроенных пакетов.UPDATE: уже вышел релиз
1.0.2
. WTF?Не помню уже, чем мне в прошлый раз не угодил
Вот мой код для
Это такой
swiper
, но было так: я его установил, включил, какое-то время попользовался, а потом удалил. После этого я набрёл на проект anzu
, который делает то же самое, что и swiper
, только уже давно не развивается.Вот мой код для
swiper
:;; 📦 SWIPER
;; https://elpa.gnu.org/packages/swiper.html
;; Умный поиск и отличная замена `isearch-forward' и
;; `isearch-backward'.
(use-package swiper
:ensure t
:bind (:map global-map
("C-s" . swiper-isearch)))
Это такой
isearch-forward
+ isearch-backward
, только он показывает все вхождения сразу, если они есть.🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
swiper
в естественной среде обитанияНа что влияет значение параметра `source-directory`?
Anonymous Quiz
30%
Это путь к исходному коду активного проекта
48%
Это путь к исходному коду Emacs
22%
Это путь к каталогу с `init.el`
👍1
Зачем задавать значение переменной
Разумеется, исходный код Emacs не устанавливается вместе с самим Emacs. Чтобы получить доступ к описаниям переменных C, нужно сделать несколько дополнительных шагов:
1. Загрузить архив с кодом с сайта GNU.
2. Распаковать архив в какой-нибудь каталог. В Debian Linux для этого лучше всего подходит
3. Задать для переменной
Кстати, из исходного кода на C можно узнать много интересного. Вот вам цитата:
Это очередное напоминание: нельзя использовать
source-directory
? В Emacs не все переменные описаны в .el
-файлах: его основной код написан на C, и очень часто, при вызове xref-find-definitions
, Emacs открывает не какой-нибудь simple.el.gz
, а, например, editfns.c
.Разумеется, исходный код Emacs не устанавливается вместе с самим Emacs. Чтобы получить доступ к описаниям переменных C, нужно сделать несколько дополнительных шагов:
1. Загрузить архив с кодом с сайта GNU.
2. Распаковать архив в какой-нибудь каталог. В Debian Linux для этого лучше всего подходит
/usr/share/emacs/<версия>/src/
.3. Задать для переменной
source-directory
значение, указывающее на путь к каталогу с исходным кодом.(customize-set-variable 'source-directory "/usr/share/emacs/29.4/src/")
Кстати, из исходного кода на C можно узнать много интересного. Вот вам цитата:
DEFVAR_LISP ("menu-bar-mode", Vmenu_bar_mode,
doc: /* Non-nil if Menu-Bar mode is enabled.
See the command `menu-bar-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `menu-bar-mode'. */);
Vmenu_bar_mode = Qt;
Это очередное напоминание: нельзя использовать
setq
! Нужно использовать customize-set-variable
и custom-set-variables
для изменения настроек!Проект GNU взял под крыло пакет indent-bars . Он используется для отображения линеек отступов. Многим из нас будет полезен, особенно тем, кто много работает с Markdown и ReStructured Text:
;; 📦 INDENT-BARS
;; https://github.com/jdtsmith/indent-bars
;; Красивая подсветка отступов
(use-package indent-bars
:ensure t
:hook ((emacs-lisp-mode
makefile-mode
markdown-mode
python-mode
rst-mode
yaml-mode
) . indent-bars-mode))
GitHub
GitHub - jdtsmith/indent-bars: Fast, configurable indentation guide-bars for Emacs
Fast, configurable indentation guide-bars for Emacs - jdtsmith/indent-bars
👍2
Раньше клавиши в Emacs привязывались с помощью функции
При этом внутри неё, как видите, ещё и дополнительный вызов функции
Сейчас функция
Как видите, вызов
#клавиши
global-set-key
:(global-set-key (kbd "последовательность") 'функция)
При этом внутри неё, как видите, ещё и дополнительный вызов функции
kbd
, которая по человекочитаемому описанию вычисляет код, используемый внутри Emacs. Например, последовательность [C-x C-c]
внутри Emacs имеет ID ^X^C
. То есть, чтобы правильно привязать сочетание клавиш, нужно было делать что-то такое:(global-set-key (kbd "C-z") 'undo)
Сейчас функция
global-set-key
и родственная ей local-set-key
отмечены как устаревшие, и вместо них нужно использовать keymap-global-set
и keymap-local-set
соответственно:(keymap-global-set "последовательность" 'функция)
(keymap-local-set "последовательность" 'функция)
Как видите, вызов
kbd
стал не нужен, а привязать [C-z]
к undo
стало чуть проще:(keymap-global-set "C-z" 'undo)
#клавиши
❤5👍1
Какая функция привязана к сочетанию `[C-z]` по умолчанию?
Anonymous Quiz
11%
`undo`
2%
`undo-redo`
13%
`kill`
74%
`suspend-frame`
Ещё одна бесячая привязка по умолчанию —
1. Хочешь запустить компиляцию проекта —
2. На самом деле нажимаешь
Решение: отвязать функцию
[C-x C-p]
к функции mark-page
. Про страницы надо как-нибудь отдельно рассказать, а пока скажу лишь, что я пользуюсь Projectile, и там команды имеют префикс [C-x p]
. И у меня часто бывает такое:1. Хочешь запустить компиляцию проекта —
[C-x p c]
.2. На самом деле нажимаешь
[C-x C-p c]
: стираешь содержимое буфера и вставляешь символ c
(или с
😊).Решение: отвязать функцию
mark-page
от последовательности [C-x C-p]
:(keymap-global-unset "C-x C-p")
Здравствуйте, дорогие читатели!
На Boosty доступна версия книги 24.10, и теперь сразу в двух редакциях — обычной и Monokai. Отличий в содержимом нет, только в теме оформления. Сейчас покажу, как это выглядит.
На Boosty доступна версия книги 24.10, и теперь сразу в двух редакциях — обычной и Monokai. Отличий в содержимом нет, только в теме оформления. Сейчас покажу, как это выглядит.
boosty.to
Максим Дунаевский - GNU Emacs для технических писателей
Exclusive content from Максим Дунаевский, subscribe and be the first to access!
Про мизинец, который в английском "pinki".
На клавиатурах для LISP-машин клавиша [Ctrl] размещалась там, где сейчас [Alt]. А там, где сейчас [Ctrl], находилась клавиша [Meta]. Поэтому сочетания для Emacs были там весьма удобны: зажимаешь большим пальцем [Ctrl], потом нужную клавишу. Сейчас [Ctrl] приходится нажимать мизинцем, и это породило целый мем среди пользователей редактора: "pinki problem".
Есть разные способы решения этой проблемы, но основных два:
- повесить Ctrl на CapsLock и нажимать его ребром ладони;
- на уровне системы поменять поведение Ctrl и Alt, превратив их по сути в Meta и Ctrl.
Мне оба способа не нравятся, и я пользуюсь обычными сочетаниями. Мизинец не болит.
Если у вас болит — посмотрите пакет ergoemacs-mode.
На клавиатурах для LISP-машин клавиша [Ctrl] размещалась там, где сейчас [Alt]. А там, где сейчас [Ctrl], находилась клавиша [Meta]. Поэтому сочетания для Emacs были там весьма удобны: зажимаешь большим пальцем [Ctrl], потом нужную клавишу. Сейчас [Ctrl] приходится нажимать мизинцем, и это породило целый мем среди пользователей редактора: "pinki problem".
Есть разные способы решения этой проблемы, но основных два:
- повесить Ctrl на CapsLock и нажимать его ребром ладони;
- на уровне системы поменять поведение Ctrl и Alt, превратив их по сути в Meta и Ctrl.
Мне оба способа не нравятся, и я пользуюсь обычными сочетаниями. Мизинец не болит.
Если у вас болит — посмотрите пакет ergoemacs-mode.
👍2
В канале Любители AsciiDoc спросили, как быстро перемещаться между разделами в больших AsciiDoc-файлах в Sublime Text.
У пользователей Emacs несколько вариантов:
1.
2.
3.
4.
У пользователей Emacs несколько вариантов:
1.
occur
с регулярным выражением "^=* "
(обратите внимание на пробел после =
).2.
isearch
. Классика.3.
minimap
. Помните такой? Он всё ещё жив, но у меня работает как-то глючно, поэтому не пользуюсь.4.
breadcrumb-mode
. У него есть команда breadcrumb-jump
, которая как occur
, только по заголовкам. Правда, есть большой вопрос: "А что она считает заголовком?" Я её потестировал на исходном коде книги, и увидел дублирование некоторых пунктов в результатах поиска.В связи с новостью о блокировке действующих лицензий JetBrains процитирую с незначительными изменениями часть известной копипасты:
"Мы останавливаем действие лицензий для пользователей из России!" — раздался пронзительный голос со стороны JetBrains.
Но пользователи GNU Emacs, VIM и Neovim, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекают, что с них взять?
Хабр
Компания JetBrains начала блокировать оплаченные лицензии пользователей, находящихся на территории РФ
Давно использую продукты компании JetBrains. В 2022 году компания заявила о том, что уходит из России, но оставалась лазейка, что можно было сменить страну проживания и оплатить лицензию карточкой...
👍4