TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #213 13K
Привет еще раз кого не видел. Давай сейчас из гавна и палок изобретем полезняшку. Создаём текстовый файл: ~/bashdays и вставляем в него такое содержимое:

$if mode=emacs
"\"": "\C-v\"\C-v\"\C-b"
"'": "\C-v\'\C-v\'\C-b"
"`": "\C-v\`\C-v\`\C-b"
"(": "\C-v\(\C-v\)\C-b"
"[": "\C-v\[\C-v\]\C-b"
"{": "\C-v\{\C-v\}\C-b"
$endif


Загружаем эти макросы из файла:

bind -f ~/bashdays


Теперь при вводе кавычки или скобки в терминале, они будут автоматически закрываться. А курсор удобно разместится между этими символами. Как в лучших традициях современных IDE с плагинами.

Работает корректно в Bash, с настройками по умолчанию. Чтобы каждый раз это не биндить, пропиши ту же самую строчку в .bashrc/.inputrc. Или сразу глобально в /etc/inputrc если есть супер-юзер.

Нюансы:

Они есть, но вряд ли встретятся у тебя. Но все равно расскажу.

1. Макрос работает только в режиме emacs. Если не работает, возможно есть какое-то переопределение в bashrc/inputrc, типа такого:

set editing-mode vi
set -o vi


2. Не должно быть привязки функций quoted-insert, backward-char (библиотека readline) к сочетаниям \C-v, \C-b. Иначе придется править сам макрос. Проверяем:

bind -q quoted-insert
bind -q backward-char


Должно вывестись примерно такое:

quoted-insert can be invoked via "\C-q", "\C-v".
backward-char can be invoked via "\C-b", "\eOD", "\e[D".


3. Не должно быть действующих сочетаний клавиш:

"\C-v\"
"\C-v'"
"\C-v`"
"\C-v("
"\C-v["
"\C-v{"


Проверяем:

bind -X | grep 'C-[vb]."'
bind -p | grep 'C-[vb]."'
bind -s | grep 'C-[vb]."'


Ключи:

-X = List the key sequences bound by -x in a form suitable for input to bind.
-p = List the names of bindable editing functions, and what their bindings are, if any.
-s = List key sequences that invoke macros, and their values.


Cмотрим на левую часть, до двоеточия, у меня выдает такое:

"\"": "\C-v\"\C-v\"\C-b"


То есть все нормально. Короче такие себе грабли и вряд ли ты на них наступишь. Не знаю на сколько фича полезная, я давненько ей пользовался, но потом как-то не сложилось. Мне проще ручками проставить закрывашку, а не полагаться на какие-то хаки.

Но так или иначе, теперь и ты знаешь это, возможно в будущем или настоящем пригодится. Держи краба! Теперь уже точно, до завтра! Лайк, лайк!

tags: #bash
—
💩 @bashdays
More from @bashdays
  1. Sep 29, 2026Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Од…
  2. Sep 24, 2026Post #1565
  3. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  4. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  5. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  6. Sep 9, 2026Всем привет, с вами TagdTagd! Я тут вынужденно перешёл на MAX. Просто Telegram перестал ра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →