Я пытаюсь заставить 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.
Добавление двух закрывающих скобок и выделение всего блока с помощью vi{
обеспечило мне правильный автоматический отступ в gvim 7.2 без плагинов. Вы можете проверить, не испортил ли его какой-нибудь ошибочный плагин, запустив vim с флагом --noplugins
в командной строке. и попробуйте снова.
Ненавижу говорить что-то бесполезное, например «Это работает для меня», но это действительно так. Даже когда в моем .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 или другом плагине может вызывать конфликт.
Для меня это работает (не очень полезное заявление, я знаю ;-) ). Я предполагаю, что тип файла определяется неправильно.
Что говорит
:set filetype
? Он должен сообщать "javascript".
[EDIT] Подсказка: Обратите внимание, что существует опция под названием 'filetype' и команда под названием :filetype. Для получения справки по опции сделайте :help 'filetype', для команды сделайте :help :filetype.
На днях у меня возникли проблемы с MacVim 7.2 и файлом Lua, который не мог правильно отступать - даже после использования set syntax
, set filetype
и filetype indent on
, он не отступал правильно.
Я обнаружил, что добавление:
filetype plugin indent on
в файл .gvimrc
решило проблему, по крайней мере для меня. YMMV.