Как открыть Vim с предварительным текстом в новом файле
Узнайте, как открыть Vim с предварительно заполненным содержимым в несуществующем файле и создать файл только при сохранении, чтобы избежать нежелательного создания.
Как открыть Vim с предварительно заполненным текстом в файле, который ещё не существует?
Я хочу написать скрипт, который открывает Vim с заранее заполненным текстом в файле, который ещё не существует. Скрипт должен удовлетворять следующим требованиям:
- Если я сохраню содержимое в Vim (:w), оно должно быть записано по указанному пути.
- Если я выйду из Vim без сохранения (:q!), файл не должен быть создан.
При попытке использовать такой подход:
with open(filename, "x") as file:
file.write("something long and complicated")
subprocess.call(["vim", filename])
Требование №1 выполняется, но №2 – нет: если я выйду из Vim без сохранения, файл всё равно создаётся. Я хочу, чтобы поведение было таким же, как если бы я вызвал vim filename и затем добавил содержимое вручную.
Какой лучший способ добиться такого поведения?
Вы можете использовать переключатель +{команда} для выполнения команды Ex после открытия файла.
Для вставки текста в буфер можно воспользоваться любым из следующих подходов:
- Подавать клавиши – имитировать ввод в режиме Normal:
vim +call\ feedkeys('iHello\n', 'n') file.txt
- Команда режима Normal – выполнить команду Normal напрямую:
vim +normal\ iHello\ file.txt
- Команда Ex – установить или добавить строки через Ex:
vim +call\ setline(1, ['Hello']) file.txt
# или
vim +call\ append(0, 'Hello') file.txt
Все эти варианты запускают Vim, вставляют текст и оставляют курсор после вставленного текста.
Если вы хотите, чтобы файл был только для чтения после вставки, добавьте +set\ readonly к командной строке.