2013-07-06 79 views
1

我已经使用xbindkeys配置了一个键盘快捷键来运行python脚本。从python脚本运行vim命令

现在,在编辑任VIM文件,如果用户按下该键盘shortcut-

  • 我希望我的python脚本来运行这个命令来粘贴路径和线路没有到系统clipboard-

    :let @+=expand("%") . ':' . line(".")

  • 然后我想我的脚本这条道路从系统剪贴板复制和进一步处理它

你能为我提出一个好的解决方案吗? 在此先感谢

+1

如果你想复制到系统剪贴板,那么你可以使用这个命令'os.system(“echo'hello world'| pbcopy”)' –

+0

@kylek感谢您回复,关于第一部分的任何想法,对我很重要。 –

+0

@ kylek我在Linux上,这对我有用[链接](http://www.answermysearches.com/python-how-to-copy-and-paste-to-the-clipboard-in-linux/286/ ) –

回答

1

此作品在我的机器(OSX)上:

function! CopyToClipboard() 
    py << EOF 
import vim, os 
# evaluate a vim expression and save its value to a variable 
path_line = vim.eval('expand("%") . ":" . line(".")') 
# copy the string to the clipboard 
os.system("echo '%s' | pbcopy" % path_line) 

# do additional stuff with path_line here 

EOF 
endfunction 

一个例子键绑定:

nnoremap ,c :call CopyToClipboard()<CR> 

看一看这个链接获取更多信息蟒蛇/ VIM接口: http://vimdoc.sourceforge.net/htmldoc/if_pyth.html和,当然,:h python

如果你的脚本很长,我会建议把所有东西放在单独的python-only文件中。

:h pyfile 

在这种情况下应该有所帮助。

+0

我可以使用键盘快捷键来调用这个脚本,比如使用ctrl + shift + e或者我只能从vim调用它。 你把这个文件放在哪里以及你用什么扩展名.py? –

+0

您可以使用vim中的键绑定来调用它。您可以将函数(和键绑定)放在.vimrc中。如果你把它放在一个文件扩展名为“.vim”的文件中,你只需确保vim在启动时读取(源)文件。参见':h source'。正如我所说的,你可以把Python代码放在​​一个'.py'文件中,并用'pyfile'加载它。 – qzr

1

您应该使用Vim的Python API,而不是外部Python脚本。见:h python。您可以通过其功能直接访问所有信息。您可以使用vim.command()评估vim命令以与剪贴板交互。

还有其他方法可以使用例如PyGTK,或者更直接地通过python-xlib,但可能会更困难。