Наполовину рабочее поведение точек Graphviz в vim

Я использую Vim 7.4 в Windows, и отступы Vim для файлов точек Graphviz кажутся наполовину работоспособными.

Если я уберу весь файл, выделю все и использую =, все отступы будут нормально. Но пока я печатаю, все автоматически переходит в крайний левый столбец (без отступов).

Вот пример файла на случай, если я что-то неправильно набираю:

digraph "test" {
    "node1" -> "node2";
    "node2" -> "node3";
}

Подсветка синтаксиса точечных файлов работает нормально, как и отступы в других файлах (Java, XML и т. Д.).


person David    schedule 19.01.2016    source источник


Ответы (1)


Вероятно, это потому, что вы не устанавливаете smartindent или cindent.

Проверьте вывод

:set smartindent?
:set cindent?

Если они возвращают nosmartindent и nocindent соответственно, то добавление

set smartindent

(или set cindent) устранит проблему.

От :h smartindent:

При переходе на новую строку используйте умный автоматический отступ. Работает для C-подобных программ, но может использоваться и для других языков.


  1. Тогда почему отступ работает для других типов файлов? Это связано с тем, что для этих типов файлов установлены специальные функции, разработанные для указания vim, как делать отступ в заданных строках с именем indentexpr (попробуйте :verb set indentexpr? при редактировании файлов java). :h indentexpr:

Он используется при создании новой строки для | = | и в режиме вставки, как указано в параметре indentkeys. Если этот параметр не пуст, он отменяет отступы «cindent» и «smartindent».

  1. Почему отступы работают с =? От :h =:

Отфильтруйте строки {motion} через внешнюю программу, заданную с параметром «equalprg». Когда опция «equalprg» пуста (это значение по умолчанию), используйте внутреннюю функцию форматирования | C-indenting | и | 'lisp' |. Но когда indentexpr не пуст, он будет использоваться вместо него.

person Yosh    schedule 20.01.2016