Função não sendo executada, mas sendo inserida como texto

3

Eu tenho esse pouco de mágica em .vimrc :

inoremap <Tab> <c-r>=InsertTabWrapper()<Return>
function! InsertTabWrapper()
    let col = col('.') - 1
    if !col || getline('.')[col - 1] !~ '\k' 
        return "\<tab>"
    else    
        return "\<c-p>"
    endif   
endfunction

Isso funciona bem em todos os sistemas que eu uso (insira Tab no início da linha, autocomplete caso contrário), no entanto em um sistema executando VIM v7.0.237 o texto real InsertTabWrapper() é inserido no arquivo em vez de executar a função . O googling casual me leva a acreditar que qualquer versão do VIM 7.x deve suportar chamadas de função como essa. Então, o que mais poderia ser o problema?

    
por dotancohen 13.01.2013 / 12:41

1 resposta

2

Então ...

O fato de o Vim não poder avaliar uma expressão tão simples como 1+2 sugeriu que não é possível usar "expressões" como um todo. AFAIK, a única razão para isso seria que o Vim não é construído com o recurso +eval .

É por isso que pedi que você verifique a presença de +eval em $ vim --version | grep eval .

    
por 16.01.2013 / 11:47

Tags