2016-09-24 2 views
0

У меня есть файл словаря, используемый для автозаполнения в VI. Я знаю, что мне нужно использовать «CTRL + X, CTRL + K» для поиска и автозаполнения слова или строки. Пример файла DIC .:Vi/Vim Dictionary Get Whole Line

xi_x1_a1

xi_x1_a2

xi_x1_a3

xi_x1_a4

xi_x2_a4

xi_x1_a6

xi_x1_b

...

В Vi/Vim, если я вхожу: Xi "CTRL + X, CTRL + к", то я буду получать все строки в словаре на курсор. Это не полезно, потому что в моем словаре есть много строк.

Как я могу ввести только «a4, CTRL + x, CTRL + k»? Тогда я получаю две строки соответствия в курсоре для строки автозаполнения.

xi_x1_a4

xi_x2_a4

Спасибо за помощь.

ответ

1

Вам необходимо использовать completefunc. Это позволяет указать способ, который вы хотите выполнить.

При редактировании ~/.vimrc и поставить что-то вроде:

function! MyCompleteFunc(findstart, base) 
    if (a:findstart == 1) 
    normal b 
    return col(".") - 1 
    else 
    " Hardcoded path to dictionary. You could tweak this to use 
    " whatever dictionary you have set with `set dictionary=` 
    let l:data = readfile("/home/david/mydic.txt") 
    return filter(l:data, 'v:val =~ ".*' . a:base . '.*"') 
    endif 
endfunction 

set completefunc=MyCompleteFunc 

он должен сделать трюк.

Тогда вы будете иметь возможность использовать CTRL +хCTRL +у

См :help i_^x, :help 'completefunc' и :help complete-function для получения дополнительной информации.

 Смежные вопросы

  • Нет связанных вопросов^_^