В настоящее время я пишу небольшой скрипт bash для создания предварительно заполненного файла в определенном месте. Для этого мой bash-скрипт вызывает vim и выполняет vim-скрипт.
В этом скрипте vim я хочу спросить пользователя, является ли место, где будет сохранен созданный файл, правильным. Затем пользователь вводит да или нет.
Для этого я использую этот набор команд:
call inputsave()
let name = input('Is it the correct location ? y/n')
call inputrestore()
эта функция ввода работает нормально, когда я нахожусь в gvim или vim. Но из скрипта ничего не отображается, это терминал, в котором я запустил свой bash-скрипт.
Есть ли способ перенаправить выходы на мой терминал?
Я нашел :redir > {file}
, но это, очевидно, перенаправляет все выходные данные vim в файл, который не является интерактивным.
Мне также удалось отобразить что-то в терминале, используя это:
let tmp = "!echo what I want to display"
execute tmp
unlet tmp
но опять же это только для отображения чего-то. Я не смогу ввести ввод
Мой bash-скрипт:
#!/bin/bash
touch tmp.txt #file used to pass argument to vim
echo "$1" >> tmp.txt #append argument to the end of the txt file
vim -e tmp.txt <create_new_file.vim #launch vim and execute the scrip inside create_new_file.vim
rm tmp.txt
echo "new file created"
create_new_file.vim
в основном просто вызывает мою функцию CreateFile(_name)
, расположенную в моем .vimrc
. Это та функция, которая вызывает inputsave()
, input()
и inputrestore()
.