Как исправить сломанный автоматический отступ в vim - PullRequest
5 голосов
/ 27 апреля 2010

Я пытаюсь использовать 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, который является правильным. А если я сделаю "установить indentexpr?" Я получаю «GetMatlabIndent (v: lnum)» для файлов matlab и «GetVHDLindent ()» для файлов vhdl.

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

Есть идеи?

1 Ответ

1 голос
/ 27 сентября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...