Python:在MacVim或gvim中打开选项卡

时间:2014-04-13 23:49:43

标签: python vim

我正在编写一个在GUI vim文本编辑器中打开一个或多个文件的应用程序。不同的文件将由线程处理。现在,当我打开第二个文件时,线程第二次打开MacVim(导致它也挂起)但我真正想要的是它打开第二个选项卡。这是我得到了多远:

import threading
import os
from subprocess import call

EDITOR = os.environ.get("EDITOR", "/Applications/MacVim.app/Contents/MacOS/MacVim")

class MyThread (threading.Thread):

    def __init__(self, sf):
        threading.Thread.__init__(self)
        self.sf = sf

    def run (self):
        call([EDITOR, self.sf])

L = ["/path/to/file1.txt", 
 "/path/to/file2.txt"]

while True:

    path_to_file = L.pop()
    tr = MyThread(path_to_file) 
    tr.start()

    answer = input("Another thread to start? ")
    if answer is not 'y':
        break

在找到解决方案后进行编辑(基于下面给出的答案):

 def run (self):
    call([EDITOR, "--remote-tab-silent", self.sf])

由于存在名为VIM的默认服务器,因此似乎无需显式创建服务器。因此,通过提供选项--remote-tab-silent,它立即开始使用它。

1 个答案:

答案 0 :(得分:1)

:help client-server

不要打开多个Vims。打开一个Vim,使其成为服务器,然后向其发送命令以打开其他选项卡。这样,您不需要线程(除非您的线程也在做其他事情),因为每个vim调用都会立即解决,只是向正在运行的服务器发送命令,然后退出(只要有服务器)已经在运行了。)