2010-04-27 12 views
5

Sto provando ad usare vim 7.2 (su Windows XP) per indentare automaticamente e formattare alcuni codici VHDL e Matlab. Per fare ciò sto cercando di usare il comando "gg = G". Tuttavia questo non funziona correttamente. Il codice non è affatto rientrato correttamente.Come correggere il rientro automatico rotto in vim

Per fare un esempio, ho avuto il seguente codice sorgente, che è stata già adeguatamente rientrato:

% 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 

Se uso il comando "gg = G" ottengo:

% 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 

Come puoi vedere, in questo esempio Vim indenta in modo errato il codice dopo il primo blocco "if". Per altri file ho problemi simili (anche se non necessariamente sul primo blocco se).

Per i file VHDL si verificano problemi simili.

Ho provato a utilizzare diverse combinazioni delle impostazioni autoindent, smartindent e cindent. Dopo aver consultato questi forum, mi sono anche assicurato che la "sintassi", "filetype", "indentazione del tipo di file" e "indentazione del plug-in del filetype" fossero impostati su on. Tuttavia, non funziona. Inoltre, se faccio "impostare la sintassi?" Ottengo "matlab" per i file matlab e "vhdl" per i file vhdl che è corretto. E se io "set indentexpr?" Ottengo "GetMatlabIndent (v: lnum)" per i file MATLAB e "GetVHDLindent()" per i file vhdl.

Per provare a isolare il problema (e assicurarsi che non sia dovuto a uno dei plugin vim che ho installato) facendo una nuova installazione di VIM su un altro computer (in cui VIM non era mai stato installato prima) . Su quel computer ho lo stesso tipo di problemi (è per questo che non penso di doverti dare il .vimrc, ma se ne hai bisogno posso caricarlo anche qui).

Qualche idea?

risposta

1

Vedere la pagina wiki this per le spiegazioni dei diversi metodi di indentazione automatica in vim.

Nella pagina this è possibile trovare un file di rientro per matlab che è possibile utilizzare con indentazione basata su tipo di file. Here è simile per VHDL.

Problemi correlati