3

У меня есть немного магии в .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

Это прекрасно работает на всех системах, которые я им использую (вставка Tab в начале строки, в противном случае автозаполнение), однако на одной системе с VIM v7.0.237 фактический текст InsertTabWrapper() вставляется в файл вместо запуска функции. Случайный поиск в Google заставляет меня поверить, что любая версия VIM 7.x должна поддерживать такие вызовы функций. Так в чем еще может быть проблема?

1 ответ1

2

Так…

Тот факт, что Vim не может оценить выражение так просто, как 1+2 , говорит о том, что он не может использовать "выражения" в целом. AFAIK, единственная причина этого заключается в том, что Vim не построен с функцией +eval .

Вот почему я попросил вас проверить наличие +eval в $ vim --version | grep eval .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .