python编码风格的单词分隔符?

时间:2013-03-19 09:36:29

标签: python vim

PEP8使用_作为单词分隔符,例如,名为get_context_data的方法。

当您想要将get_context_data更改为set_context_data时,

caw 非常酷。

我用Google搜索并将set iskeyword-=_添加到我的vimrc。

但是这个更改会带来另一个问题,我可以在输入get_时自动填写方法名称,菜单显示context而不是context_data我想要的,有没有办法解决问题

2 个答案:

答案 0 :(得分:3)

通过更改'iskeyword'设置,您可以影响(并可能打破)很多事情;其中 word 动作(we等),完成(此处为您的问题)和语法高亮。

我建议保留原始设置(毕竟,get_context_data作为单个变量也应该由单个表示。您可以使用我的camelcasemotion plugin处理下划线分隔的片段。使用该插件,您可以覆盖原始动作和文本对象,也可以使用ca,w代替caw

答案 1 :(得分:1)

最好不要更改iskeyword选项。有很多命令需要它。如果您只想更轻松地编辑下划线连接字符串(a_b_c_d),可以尝试以下映射:

onoremap iu :<c-u>normal! T_vt_<cr>
onoremap au :<c-u>normal! F_vf_<cr>

使用此映射,(iu表示在Underscore中,您可以更改它)。你可以举个例子

get_cont[I]ext_data ( [I]:cursor) 

您输入ciu get_[I]_datadiu将删除,au也会对包裹的下划线进行操作。

但是,对于这些情况,上述映射确实工作(或意外地工作^ _ *

g[I]et_context_data -> [I]_context_data  (you could do bct_ instead)
get_context_dat[I]a -> get_context_[I]   (you could do ecT_ or T_cw instead)

因为映射不能按字面顺序工作。但是,您可以使其适合您的需要。