我在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上有视觉铃吗?如果是这样,这是如何实现的?
我试图扩展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__用魔术方法覆盖内置?如果你不能直接 - 这里发生的事情与非魔术方法有什么不同?
我正在使用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)
我今天需要拼写一本字典.我想要的意思是:
{'_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如何解决单行并导致无?