2010-04-27 11 views
5

Estoy tratando de usar vim 7.2 (en Windows XP) para sangrar automáticamente y formatear algunos códigos VHDL y Matlab. Para hacerlo, intento usar el comando "gg = G". Sin embargo, esto no funciona correctamente. El código no está adecuadamente sangrado en absoluto.Cómo reparar la sangría automática rota en vim

Para dar un ejemplo, tenía el siguiente código, que ya estaba sangría correctamente:

% 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 

Si utilizo el comando "gg = G" me sale:

% 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 

Como puede ver, en este ejemplo Vim indebidamente sangra el código después del primer bloque "if". Para otros archivos, tengo problemas similares (aunque no necesariamente en el primer bloque si).

Para archivos VHDL me sale problemas similares.

He intentado utilizar diferentes combinaciones de las configuraciones autoindent, smartindent y cindent. Después de pasar por estos foros, también me he asegurado de que la "sintaxis", "tipo de archivo", "tipo de archivo" y "tipo de archivo sangría" estén activados. Aún así, no funciona. Además, si hago "¿establecer la sintaxis?" Obtengo "matlab" para los archivos de matlab y "vhdl" para los archivos de vhdl, lo cual es correcto. Y si hago "set indentexpr?" Obtengo "GetMatlabIndent (v: lnum)" para los archivos de matlab y "GetVHDLindent()" para los archivos vhdl.

Para intentar aislar el problema (y asegurarme de que no se debe a uno de los complementos de vim que he instalado) realizando una nueva instalación de VIM en una computadora diferente (en la que VIM nunca se había instalado) . En esa computadora tengo el mismo tipo de problemas (es por eso que no creo que deba darte el .vimrc, pero si lo necesitas puedo subirlo aquí también).

¿Alguna idea?

Respuesta

1

Consulte la página wiki de this para obtener explicaciones de los diferentes métodos para la sangría automática en vim.

En la página this puede encontrar un archivo de sangría para matlab que puede usar con sangría basada en tipo de archivo. Here es similar para VHDL.

Cuestiones relacionadas