Использование функции findfile в Vim? - PullRequest
6 голосов
/ 23 июля 2011

Я ищу пример использования функции findfile в скрипте vim для рекурсивного поиска файла вверх, в частности с использованием подстановочного знака.

Всякий раз, когда я включаю подстановочный знак как часть первого параметра функции, это, похоже, не работает.

Например, со следующей структурой каталогов:

~/MyProject/
    Test.sln
    src/
      Test.cs

Если я запускаю следующую функцию при редактировании файла Test.cs с pwd, установленным в ~ / MyProject / src

function! Test()
   let a = findfile("*.sln", ".;")
   echo a
endfunction

findfile, похоже, ничего не возвращает. Тем не менее, если я изменю функцию для удаления виджета следующим образом:

function! Test()
   let a = findfile("Test.sln", ".;")
   echo a
endfunction

Он делает то, что я ожидал.

Я проверил это как на Ubuntu, так и на Windows, и я вижу одинаковое поведение на обоих. Я что-то не так делаю или findfile просто не поддерживает символы подстановки? Отсутствие поддержки подстановочного знака кажется довольно странным упущением. Кажется, я тут что-то не так делаю.

Ответы [ 2 ]

6 голосов
/ 24 июля 2011

Если вы используете подстановочные знаки, я думаю, что вам нужны функции glob() и / или globpath(). См :h glob() и :h globpath().

0 голосов
/ 23 июля 2011

Один способ сделать это с внешним (быстрый) find

function! Test()
  let l:list=system("find .. -maxdepth 1 -name \*.sln")
  echo l:list
endfunction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...