Добавление отступа JavaScript в VIM

Я пытаюсь заставить VIM располагать JavaScript с отступом с '=' и связанные команды. Когда я пробую к автоматическому отступу следующее, например:

   new function($) {
     $.fn.setCursorPosition = function(pos) { 
       if ($(this).setSelectionRange) {
         $(this).setSelectionRange(pos, pos);
       } else if ($(this).createTextRange) {
         var range = $(this).createTextRange();
         range.collapse(true);
         range.moveEnd('character', pos);
         range.moveStart('character', pos);
         range.select();
       }

Результатом является довольно абсурдное:

       new function($) {
       $.fn.setCursorPosition = function(pos) {
       if ($(this).setSelectionRange) {
       $(this).setSelectionRange(pos, pos);
       } else if ($(this).createTextRange) {
       var range = $(this).createTextRange();
       range.collapse(true);
       range.moveEnd('character', pos);
       range.moveStart('character', pos);
       range.select();
       }

Я установил set syntax=javascript, и я установил filetype кому:

filetype detection:ON  plugin:ON  indent:ON

Хотя я попробовал каждую перестановку этого. Я попробовал каждую перестановку smartindent, autoindent, и cindent, но ничто, кажется, не имеет корректного эффекта предоставления Vim ожидаемого добавления отступа. Я установил tabstop=4.

Я установил javascript.vim, и IndentAnything, хотя они, кажется, не имеют эффекта.

Я был бы очень благодарен за любые предложения относительно того, как получить Vim, делающий отступ правильно в JavaScript.

15
задан ROMANIA_engineer 7 January 2015 в 15:41
поделиться

4 ответа

Добавление двух закрывающих скобок и выделение всего блока с помощью vi{ обеспечило мне правильный автоматический отступ в gvim 7.2 без плагинов. Вы можете проверить, не испортил ли его какой-нибудь ошибочный плагин, запустив vim с флагом --noplugins в командной строке. и попробуйте снова.

4
ответ дан 1 December 2019 в 02:28
поделиться

Ненавижу говорить что-то бесполезное, например «Это работает для меня», но это действительно так. Даже когда в моем .vimrc и все плагины нет ничего, я получаю правильный отступ.

new function($) {
    $.fn.setCursorPosition = function(pos) { 
        if ($(this).setSelectionRange) {
            $(this).setSelectionRange(pos, pos);
        } else if ($(this).createTextRange) {
            var range = $(this).createTextRange();
            range.collapse(true);
            range.moveEnd('character', pos);
            range.moveStart('character', pos);
            range.select();
        }

Вы пробовали загрузить vim с переключателем - noplugins и временно переместить / переименовать ваш .vimrc, чтобы проверить, не работает ли он по-прежнему? Я подозреваю, что другой параметр в вашем .vimrc или другом плагине может вызывать конфликт.

3
ответ дан 1 December 2019 в 02:28
поделиться

Для меня это работает (не очень полезное заявление, я знаю ;-) ). Я предполагаю, что тип файла определяется неправильно.

Что говорит

 :set filetype

? Он должен сообщать "javascript".

[EDIT] Подсказка: Обратите внимание, что существует опция под названием 'filetype' и команда под названием :filetype. Для получения справки по опции сделайте :help 'filetype', для команды сделайте :help :filetype.

3
ответ дан 1 December 2019 в 02:28
поделиться

На днях у меня возникли проблемы с MacVim 7.2 и файлом Lua, который не мог правильно отступать - даже после использования set syntax, set filetype и filetype indent on, он не отступал правильно.

Я обнаружил, что добавление:

filetype plugin indent on

в файл .gvimrc решило проблему, по крайней мере для меня. YMMV.

3
ответ дан 1 December 2019 в 02:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: