小编Roc*_*man的帖子

如何在Mac上的vim中获得视觉铃声?

我在Lion OS X的终端上调用vim.我想摆脱音频铃声,只使用视觉铃声.文档似乎表明我可以完成这个:set vb.一旦我发出:set vb以下设置结果:

:set vb? t_vb?
Run Code Online (Sandbox Code Playgroud)

visualbell
t_vb=
Run Code Online (Sandbox Code Playgroud)

闪光灯显然不起作用.文档表明t_vb应该是<Esc>|f默认的.它不是.我试图t_vb直接设置,但我无法弄清楚生产闪存应该是什么.

另请注意,它也不适用于mvim.但在mvim的情况下,它默认t_vb=^[|f无效.

有人在Mac上有视觉铃吗?如果是这样,这是如何实现的?

vim macvim

5
推荐指数
2
解决办法
1987
查看次数

在python中扩展内置时,你能覆盖一个神奇的方法吗?

我试图扩展str和覆盖魔术方法__cmp__.下面的示例显示使用__cmp__时不会调用magic方法>:

class MyStr(str):
    def __cmp__(self, other):
        print '(was called)',
        return int(self).__cmp__(int(other))


print 'Testing that MyStr(16) > MyStr(7)'
print '---------------------------------'
print 'using _cmp__ :', MyStr(16).__cmp__(MyStr(7))
print 'using > :', MyStr(16) > MyStr(7)
Run Code Online (Sandbox Code Playgroud)

运行时导致:

Testing that MyStr(16) > MyStr(7)
---------------------------------
using __cmp__ : (was called) 1
using > : False
Run Code Online (Sandbox Code Playgroud)

显然,当使用>内置的底层"比较"功能时,会调用它,在这种情况下是字母顺序排序.

有没有办法__cmp__用魔术方法覆盖内置?如果你不能直接 - 这里发生的事情与非魔术方法有什么不同?

python

5
推荐指数
1
解决办法
144
查看次数

为什么stdout在连接到使用supervisord运行的进程时不会刷新?

我正在使用Supervisor(用python编写的进程控制器)来启动和控制我的Web服务器和相关服务.我发现有时需要在服务器运行时进入pdb(或ipdb)进行调试.我在通过主管这样做时遇到了麻烦.

Supervisor允许使用名为supervisord的守护进程启动和控制进程,并通过名为supervisorctl的客户端提供访问.此客户端允许您附加到使用"fg"命令启动的其中一个前台进程.像这样:

supervisor> fg webserver
Run Code Online (Sandbox Code Playgroud)

所有日志记录数据都将发送到终端.但我没有从pdb调试器获得任何文本.它确实接受了我的输入,因此stdin似乎正在工作.

作为调查的一部分,我能够确认既不发送print也不raw_input发送; 但在raw_inputstdin确实有效的情况下.

我还能够确认这是有效的:

sys.stdout.write('message')
sys.flush()
Run Code Online (Sandbox Code Playgroud)

我发布fg命令的时候就好像我已经在标准终端的前台运行了进程......但是看起来supervisorctl正在做更多的事情.例如,定期打印不会刷新.有任何想法吗?

当使用fgsupervisorctl中的命令连接到前台终端时,如何使pdb,标准打印等正常工作?

(可能有用的参考:http://supervisord.org/subprocess.html#nondaemonizing-of-subprocesses)

python unix terminal supervisord

4
推荐指数
2
解决办法
2249
查看次数

链式方法用dict调用Python

我今天需要拼写一本字典.我想要的意思是:

{'_id': 0, 'sub': {'a': 1, 'b':2}}
Run Code Online (Sandbox Code Playgroud)

成为:

{'_id': 0, 'a':1, 'b':2}
Run Code Online (Sandbox Code Playgroud)

所以我觉得我可以聪明一点,然后拉掉下面的单线.

一内胆:

x = dict(_id=0, sub=dict(a=1, b=2))
y = x.pop('sub').update(x)  # incorrect result
Run Code Online (Sandbox Code Playgroud)

这导致了y = None.

所以我显然采取了:

多重步骤:

x = dict(_id=0, sub=dict(a=1, b=2))
y = x.pop('sub')
y.update(x)   # correct result
Run Code Online (Sandbox Code Playgroud)

设置"良好的表达性编码实践"有助于片刻,我想理解为什么上面的单行方法会产生None.我原本以为x.pop('sub')会导致某个堆栈上的临时dict,原来的x dict会立即更新.然后堆栈对象将接收链中的下一个方法,即更新.这显然似乎并非如此.

为了让社区更好地理解(并且显然是我的) - python如何解决单行并导致

python

1
推荐指数
1
解决办法
135
查看次数

标签 统计

python ×3

macvim ×1

supervisord ×1

terminal ×1

unix ×1

vim ×1