Как исправить сломанный автоматический отступ в vim

Я пытаюсь использовать vim 7.2 (в Windows XP) для автоматического отступа и форматирования кода VHDL и Matlab. Для этого я пытаюсь использовать команду "gg=G". Однако это не работает должным образом. Код вообще не имеет правильного отступа.

Чтобы дать вам пример, у меня был следующий исходный код, который уже имел правильный отступ:

% This function is based on the code_g_generator() function
function [v_code] = get_code(n_code_number)
% There is no need to clear the persistent variables in this function
mlock 
%% Initialize the internal variables
persistent n_fifo_top;
if isempty(n_fifo_top)
    n_fifo_top = 1;
end

N_MEMORY_SIZE = 4;
if n_code_number > 4
    c_saved_code_fifo = {-1*ones(1, N_MEMORY_SIZE)};
end

Если я использую команду «gg = G», я получаю:

% This function is based on the code_g_generator() function
function [v_code] = get_code(n_code_number)
% There is no need to clear the persistent variables in this function
mlock 
%% Initialize the internal variables
persistent n_fifo_top;
if isempty(n_fifo_top)
        n_fifo_top = 1;
    end

    N_MEMORY_SIZE = 4;
    if n_code_number > 4
        c_saved_code_fifo = {-1*ones(1, N_MEMORY_SIZE)};
    end

Как видите, в этом примере Vim неправильно делает отступ в коде после первого блока if. Для других файлов у меня возникают аналогичные проблемы (хотя и не обязательно в первом блоке if).

Для файлов VHDL у меня возникают аналогичные проблемы.

Я пробовал использовать различные комбинации настроек autoindent, smartindent и cindent. После просмотра этих форумов я также убедился, что включены параметры «синтаксис», «тип файла», «отступ типа файла» и «отступ плагина типа файла». Тем не менее, это не работает. Кроме того, если я сделаю «установить синтаксис?» Я получаю «matlab» для файлов matlab и «vhdl» для файлов vhdl, что правильно. А если я сделаю "set indentexpr?" Я получаю «GetMatlabIndent (v: lnum)» для файлов Matlab и «GetVHDLindent ()» для файлов VHDL.

Чтобы попытаться изолировать проблему (и убедиться, что она не связана с одним из установленных мной плагинов vim), выполнив новую установку VIM на другом компьютере (на котором VIM никогда раньше не устанавливался). На этом компьютере у меня возникают такие же проблемы (поэтому я не думаю, что мне нужно давать вам .vimrc, но если вам это нужно, я могу загрузить его и здесь).

Есть идеи?


person didlybom    schedule 27.04.2010    source источник


Ответы (1)


См. эту вики-страницу для объяснения различных методов автоматического отступа в vim.

На этой странице вы можете найти файл отступа для Matlab, который вы можете использовать с отступом на основе типа файла. Вот аналогичный для VHDL.

person akosch    schedule 27.09.2010