kstep 07.04.2011 15:12

VimZsh-like автодополнение имён файлов в Vim-е

Только что набросал этот скриптик и спешу им поделиться с общественностью. Пишу на бегу, т.к. надо работать, но не поделиться не могу =)


Если вкратце: в zsh автодополнять пути можно так:
- пишешь ~/.vi/bu/Al/pl/Al
- жмёшь Tab,
- ???
- PROFIT: ~/.vim/bundle/Align/plugin/AlignMapsPlugin.vim

Мне этого долгое время в виме не хватало. Сейчас выпала свободная минутка и на коленке сколотил простенький скрипт:


 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"let test_path = '~/pk/vi/plu/c'

function! ZshLikeComplete(path, cmd, pos)
let parts = split(a:path, '/', 1)
let variants = (parts<0> == '~' || parts<0> == '.' || parts<0> == '..' || parts<0> == '') ?
\ remove(parts, 0, 0) :
\ split(glob(remove(parts, 0).'*'), '\n')


for part in parts
let newvars =

for variant in variants
let newvars = extend(newvars, split(glob(variant.'/'.part.'*'), '\n'))
endfor
let variants = newvars
if len(variants) &lt; 1 | break | endif
endfor

return variants
endfun

command! -complete=customlist,ZshLikeComplete -nargs=1 E edit &lt;args>
command! -complete=customlist,ZshLikeComplete -nargs=1 TE tabedit &lt;args>

"echo ZshLikeComplete(test_path, '', 0)




Собственно добавляются две команды: E и TE, аналоги нативных edit и tabedit, но с zsh-like автодополнением.
Аналогично можно добавить это автодополнение к другим командам.

В общем надеюсь, что этот кусочек кода кому-то будет полезен =)

ЗЫ. Да, класть куда-то типа в ~/.vim/plugin/zshcmpl.vim или ~/.vim/bundle/zshcmpl/plugin/zshcmpl.vim если юзаете патоген.

ЗЫЫ. (оффтоп) Да, я помню, что обещал ещё статей про Луа, но последнее время слишком занят на работе и дома, как смогу вырваться — обязательно продолжу.


Тэги: vim zsh автодополнение файлы
+ 5 -
Похожие Поделиться

bosha 07.04.2011 15:29 #
Няшка, спасибо.
kstep 07.04.2011 15:35 #
Да, я подправил слегка, чтобы учесть несколько особых случаев (начало пути на ~/, ./, ../ или /).
На этом, пожалуй, заморожу код =)
jungo 07.04.2011 17:34 #
Обязательно стоит опубликовать на www.vim.org, что бы автоматизировать установку и обновление менеджерами плагинов :)
dammer 07.04.2011 18:28 #
CommandT делает это лучше и нагляднее
kstep 07.04.2011 19:11 #
КоммандТ раздут. Кроме того я его пробовал, мне он совершенно не понравился.
kstep 07.04.2011 19:16 #
Да ещё и руби требует для такой тривиальной задачи. Короче моя его не любить.
dammer 07.04.2011 21:58 #
Моя работать на руби ;) Короче на вкус и цвет.... Но спасибо за альтернативу!
carah 08.04.2011 14:44 #
а еще он у меня вим роняет систематически!