Подтвердить что ты не робот

Использование переменных в команде оболочки vim

Как я могу использовать переменную в команде оболочки vim (одна с помощью !) в vimscript? Например, что-то вроде этого: (просто пример, а не то, что я действительно пытаюсь сделать)

function Ls(dir)
    !ls a:dir
endfunction
4b9b3361

Ответ 1

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

function Ls(dir)
    execute '!ls ' . a:dir
endfunction

Это говорит: "Оцените выражение '!ls ' . a:dir, а затем выполните его". Переменная a:dir расширяется, точка объединяет две строки в '!ls whatever', а затем выполняется так, как если бы вы ее набрали.