Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将pythonvim脚本中的文本字符串发送到tmux窗格_Python_Vim_Tmux - Fatal编程技术网

将pythonvim脚本中的文本字符串发送到tmux窗格

将pythonvim脚本中的文本字符串发送到tmux窗格,python,vim,tmux,Python,Vim,Tmux,我以以下方式同时使用Vim(8.0)和tmux(2.3):在tmux会话中,我将一个窗口拆分为两个窗格,其中一个窗格在Vim中打开了一些文本文件,另一个窗格有一些程序,我想向其中发送几行文本。一个典型的用例是将Python脚本中的行发送到另一个窗格中运行的IPython会话 我是通过一个使用python的Vim脚本来实现这一点的,代码片段示例(假设目标tmux窗格为0): py导入vim python脚本 您正在寻找shellescape()函数。如果您使用:Vim命令,{special}参数必

我以以下方式同时使用Vim(8.0)和tmux(2.3):在tmux会话中,我将一个窗口拆分为两个窗格,其中一个窗格在Vim中打开了一些文本文件,另一个窗格有一些程序,我想向其中发送几行文本。一个典型的用例是将Python脚本中的行发送到另一个窗格中运行的IPython会话

我是通过一个使用python的Vim脚本来实现这一点的,代码片段示例(假设目标tmux窗格为0):

py导入vim
python脚本
您正在寻找
shellescape()
函数。如果您使用
Vim命令,
{special}
参数必须为1

silent execute '!tmux send-keys -t 0 -l ' . shellescape(cmd, 1)
但是,由于您对(显示)shell输出不感兴趣,并且不需要与启动的脚本交互,因此我将从
到较低级别的
system()
命令

call system('tmux send-keys -t 0 -l ' . shellescape(cmd))
python
使用Python(而不是纯Vimscript)没有任何好处(至少在您问题的小片段中)。相反,如果将Python
cmd
变量嵌入到Vimscript表达式中,那么现在还需要一个Python函数以Vimscript字符串的形式转义该值(类似于
'%s'%str(cmd).replace(“',”))
)。或者,您可以在一个Vim变量中维护该值,并通过
Vim从Python访问它。vars

可能想研究使用Tim Pope的方法。当我使用Vim变量时,我仍然必须手动转义
无论它是否由
let a=“”定义;“
让a=';”
。这是为什么?好吧,我明白了,这是tmux/shell行为,我猜shell会解释像
这样的字符。奇怪的是,如果我在这些字符后添加空格,它们就会被发送出去。对不起,最后一句话/Q:如果我使用
shellcmd(getline(“)
,除了一个
(除非后面有空格,
发送正常)
call system('tmux send-keys -t 0 -l ' . shellescape(cmd))