Если вы хотите Lisp режима Vim для лечения всех форм как вызовы функций, так что элементы выражения многострочного выравнивания со вторым элементом, то просто снимите lispwords
параметр:
:set lispwords=
Вашего exmaple , вам кажется, что требуется раскол define
для обработки с отступом, а не с выравниванием. Выяснить множество форм, для которых вы хотите отступы, а не выравнивая поведение и положить, что точный набор в ваш lispwords
:
:set lispwords=define[,... whatever other symbols]
Это может быть сделано на основе типа файла с авто-загруженным. В файле .vimrc
вы можете иметь:
:au BufRead,BufNewFile *.scm set lispwords=define
После ввода, что в моем .vimrc
временно, если я редактировать новый файл:
$ vim foo.scm
, а затем вставить несколько строк, они получают автоматически отформатирован как thisL
(define fun()
(if foo
(then ...)
(else ...)
~
~
~
:q!
Я просто нажал Enter; автоиндексирование началось. Конфигурация Vim уже ассоциирует файлы .scm
с Схемой и устанавливает режим Лиспа. Команда au
настраивает это, переопределяя lispwords
.
Не очень полезно, если вы действительно хотите использовать vim, но пример, который вы дали, отформатирован так, как вы хотите, в режиме схемы Emacs (с настройкой по умолчанию). – coredump
https://www.reddit.com/r/programming/comments/1cij7/ask_reddit_best_way_to_edit_scheme_in_vim/ – coredump
http://stackoverflow.com/q/5352997/124319 – coredump