Как мне предотвратить расширение vim ~ во время завершения? - PullRequest
0 голосов
/ 13 октября 2010

Я использую vim на своем MacBook, и для простоты скажем, что у меня открыты ~/some_file.py, ~/some_other_file.py и ~/user.py. На Mac ~ расширяется до /Users/<username>. Поэтому, если я наберу :b user, а затем нажму на вкладку, чтобы развернуть, он будет проходить через каждый из файлов, вместо того, чтобы идти прямо к ~/user.py.

Есть ли способ предотвратить такое поведение?

Ответы [ 2 ]

0 голосов
/ 13 октября 2010

Поскольку кажется, что невозможно изменить завершение встроенного буфера Vim, единственное, что я могу предложить (кроме открытия этих файлов, уже находящихся в домашнем каталоге), это определить собственную команду :b с желаемым завершением. Это может быть что-то вроде этого:

function! CustomBufferComplete(a, l, p)
    let buf_out = ''
    redir => buf_out
    silent buffers
    redir END

    let buf_list = map(split(buf_out, "\n"), 'substitute(v:val, ' .
    \               '''^.*"\%(\~[/\\]\)\?\([^"]\+\)".*$'', "\\1", "g")')
    return join(buf_list, "\n")
endfunction

command! -nargs=1 -complete=custom,CustomBufferComplete B b <args>

(Обратите внимание, что он обрезает часть пути ~/ перед возвратом списка завершения.)

0 голосов
/ 13 октября 2010

Я не могу воспроизвести вашу проблему под Linux (тильды не разрешены в списке завершения моего vim, поэтому :b home дает мне ~/home.py до ~/some_file.py), но ...

Попробуйте ввести:b user затем дополните Shift + Tab.В этом случае мой vim (7.2.442, если это имеет значение) завершается с последним совпадением, что вам и нужно.

...