как удалить имя файла из меню словаря VIM? - PullRequest
3 голосов
/ 02 декабря 2009

Я установил словарь pydiction в vim, чтобы иметь возможность получать список команд python, когда я нажимаю tab после частично набранной команды. Все работает нормально, за исключением того, что каждый раз, когда появляется меню, кроме каждой команды в списке есть имя файла. Как мне удалить это имя из меню?

Плз, посмотрите на картинку: http://www.uzbozor.com/uploads/vim.png (скопируйте и вставьте ссылку, если щелчок не работает)

Спасибо

1 Ответ

1 голос
/ 19 апреля 2011

Мне не удалось решить это очень элегантно, но есть обходной путь, написав специальную функцию завершения, которая просто ищет файл словаря для совпадений:

function! MyCompleteFunction( findstart, base )
  if a:findstart
    let line = getline('.')
    let start = col('.') - 1
    while start > 0 && line[start - 1] =~ '[A-Za-z_]'
        let start -= 1
    endwhile
    return start
  else
    silent call DictGrep( a:base, 'path\to\dictionary\file' )
    let matches = []
    for thismatch in getqflist()
        call add(matches, thismatch.text)
    endfor
    return matches
  endif
endfunction

Обратите внимание, что я определил функцию DictGrep (), которая фактически выполняет vimgrep. Это так, чтобы я мог назвать это тихо и не беспокоиться сообщениями об ошибках:

function! DictGrep( leader, file )
    try
        exe "vimgrep /^" . a:leader . ".*/j " . a:file
    catch /.*/
        echo "no matches"
    endtry
endfunction

Тогда просто определите set the completefunc:

setlocal completefunc=MyCompleteFunction()

, а затем использовать для завершения в режиме вставки (которое может быть отображено для замены текущей привязки завершения словаря).

vimgrep может быть довольно медленной операцией, но я не заметил никаких проблем, если в файле словаря нет сотен совпадений.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...