从python脚本运行vim命令

时间:2013-07-06 04:49:41

标签: python linux bash vim

我已使用xbindkeys配置键盘快捷键来运行python脚本。

现在,在编辑任何vim文件时,如果该用户按下该键盘快捷键 -

  • 我希望我的python脚本运行此命令将路径和行号粘贴到系统剪贴板 -

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

  • 然后我希望我的脚本从系统剪贴板复制该路径并进一步处理

请你为我建议一个很好的解决方案。 在此先感谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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>

有关python / vim界面的更多信息,请查看此链接: http://vimdoc.sourceforge.net/htmldoc/if_pyth.html,当然还有:h python

如果您的脚本很长,我建议将所有内容放在单独的python-only文件中。

:h pyfile

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