Как я могу использовать переменную в команде оболочки vim (одна с помощью !) в vimscript? Например, что-то вроде этого: (просто пример, а не то, что я действительно пытаюсь сделать)
function Ls(dir)
!ls a:dir
endfunction
Ответ 1
Используйте команду execute. Все после него является выражением, которое оценивает строку, которое затем выполняется, как команда, которую вы набрали сами.
function Ls(dir)
execute '!ls ' . a:dir
endfunction
Это говорит: "Оцените выражение '!ls ' . a:dir, а затем выполните его". Переменная a:dir расширяется, точка объединяет две строки в '!ls whatever', а затем выполняется так, как если бы вы ее набрали.