用于在vim中编辑文件的python脚本

时间:2016-01-27 21:59:40

标签: python python-3.x vim

我想制作一个python脚本:
打开文件,执行命令i
然后写两行代码,点击escape
执行命令ZZ 我正在考虑os.system("vi program") then os.system("i")和os.system(“code”),但这不起作用,因为你只能执行命令。谢谢!

3 个答案:

答案 0 :(得分:4)

目前尚不清楚为什么要这样做。要真正运行一个交互式程序,你必须创建一个伪tty并从你的python脚本管理它 - 而不是为了胆小的人。

如果您只想将文本插入现有文件,可以使用文件命令直接从python中执行。或者您可以调用像sed这样的程序,即“流编辑器”,用于以脚本方式进行文件编辑。 sed命令支持大量ex命令集(与vi使用的基本命令集相同),因此i,c,s,g,a,所有工作。< / p>

答案 1 :(得分:1)

代码

import pyautogui
from multiprocessing import Process
import os

vi_proc = Process(target = lambda: os.system("vi program"))
vi_proc.start()

pyautogui.typewrite("i")
pyautogui.typewrite("This code\n")
pyautogui.typewrite("really sucks!")
pyautogui.press("esc")
pyautogui.typewrite("ZZ")

vi_proc.join()

THE BLABLABLA

好吧,我真的不明白为什么,但我编写了一个有效的解决方案。我使用了PyAutoGUI,一个非常简单的库,允许您模拟按键和鼠标按下和移动。

您可能还需要安装一些sysyem软件包,例如libjpeg8-dev。此外,您可能还需要在安装之前临时发出命令xhost +

那就是说,在bash中它只是:

echo -e "This code\nreally sucks!" > program

答案 2 :(得分:0)

如果确实想要从命令行运行VIM,则可以使用VIM -c选项。像这样:

gvim -c "normal oFirst line" -c "normal oSecond line" -c "ZZ" foo.txt

(根据您想要插入线的位置,使用o,O,i或I进行调整)。

但是,必须有一种更简单的方法在文件中插入两行。