我已经使用xbindkeys配置了一个键盘快捷键来运行python脚本。从python脚本运行vim命令
现在,在编辑任VIM文件,如果用户按下该键盘shortcut-
我希望我的python脚本来运行这个命令来粘贴路径和线路没有到系统clipboard-
:let @+=expand("%") . ':' . line(".")
然后我想我的脚本这条道路从系统剪贴板复制和进一步处理它
你能为我提出一个好的解决方案吗? 在此先感谢
我已经使用xbindkeys配置了一个键盘快捷键来运行python脚本。从python脚本运行vim命令
现在,在编辑任VIM文件,如果用户按下该键盘shortcut-
我希望我的python脚本来运行这个命令来粘贴路径和线路没有到系统clipboard-
:let @+=expand("%") . ':' . line(".")
然后我想我的脚本这条道路从系统剪贴板复制和进一步处理它
你能为我提出一个好的解决方案吗? 在此先感谢
此作品在我的机器(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
在这种情况下应该有所帮助。
我可以使用键盘快捷键来调用这个脚本,比如使用ctrl + shift + e或者我只能从vim调用它。 你把这个文件放在哪里以及你用什么扩展名.py? –
您可以使用vim中的键绑定来调用它。您可以将函数(和键绑定)放在.vimrc中。如果你把它放在一个文件扩展名为“.vim”的文件中,你只需确保vim在启动时读取(源)文件。参见':h source'。正如我所说的,你可以把Python代码放在一个'.py'文件中,并用'pyfile'加载它。 – qzr
您应该使用Vim的Python API,而不是外部Python脚本。见:h python
。您可以通过其功能直接访问所有信息。您可以使用vim.command()
评估vim命令以与剪贴板交互。
还有其他方法可以使用例如PyGTK,或者更直接地通过python-xlib
,但可能会更困难。
如果你想复制到系统剪贴板,那么你可以使用这个命令'os.system(“echo'hello world'| pbcopy”)' –
@kylek感谢您回复,关于第一部分的任何想法,对我很重要。 –
@ kylek我在Linux上,这对我有用[链接](http://www.answermysearches.com/python-how-to-copy-and-paste-to-the-clipboard-in-linux/286/ ) –