Как автоматически сделать закрывающую скобку в vim - PullRequest
0 голосов
/ 23 февраля 2019

Я хочу набрать

tag {
}

Когда я нажимаю «ввод» после {, мой курсор имеет два пробела с отступом (в столбце 3).(Tab для меня 2 пробела.) Затем, когда я набираю } (все еще в столбце 3), я хочу, чтобы } переместился в столбец 1.

Когда я делаю это в .cppфайл, курсор автоматически перемещается в столбец 1.

Когда я делаю это в другом файле (в моем случае .wiki), он не перемещается.} появляется в столбце 3.

Я думал, что это контролировалось с помощью 'autoindent' и 'smartindent', которые установлены в случае файла wiki.Что мне не хватает?

Какую другую информацию о конфигурации я могу предоставить для отладки?Как я могу сравнить параметры конфигурации между файлом cpp и файлом wiki?

(Правка для ясности: я использую тип файла .wiki, определенный в плагине vimwiki .)

1 Ответ

0 голосов
/ 26 февраля 2019

Проблема заключается в том, как плагин обрабатывает редактирование списков.Что удивительно, потому что конструкция tag { }, вероятно, не должна рассматриваться как единица.Чтобы вставить новый маркер списка, плагин переопределяет несколько отображений, они упоминаются в :help vimwiki-lists.А именно, o и O в обычном режиме и <CR> в режиме вставки.Вещи, которые они отображают для более или менее одинакового поведения, когда речь идет о взаимодействии с smartindent: они отключают деиндентирование, вставляя и удаляя фиктивный символ в новой строке (см., Например, здесь ).Это работает, потому что деиндентирование согласно :help smartindent происходит только в том случае, если первая строка, которую вы вводите в строке, - закрывающая скобка.

Это можно отключить, удалив соответствующие сопоставления, но при этом также будут разбиты списки.Система плагинов.Чтобы исправить , что , вы можете продублировать эти сопоставления, используя некоторые другие ключи.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...