2013-03-19 20 views
1

PEP8使用_作爲單詞分隔符,例如,名爲get_context_data的方法。python編碼風格的文字分隔符?

caw當你想要改變get_context_dataset_context_data是如此酷。

我使用Google搜索並將set iskeyword-=_添加到我的vimrc中。

但另一個問題出現這種變化,當我輸入get_我可以自動完成的方法名稱,菜單顯示我context沒有context_data我想,有沒有辦法解決這個問題的方法嗎?

+0

它只發生在py文件中嗎? – Kent 2013-03-19 09:42:18

+0

@Kent不僅適用於python,我全局使用'set iskeyword - = _',並使用supertab和autocomplpop完成代碼。 – iMom0 2013-03-19 09:49:13

+0

哦,我只是誤解了你的問題。現在我明白你爲什麼從iskeyword中刪除'_'。你想要很容易地修改'_'s之間的部分.... – Kent 2013-03-19 09:52:00

回答

3

通過更改'iskeyword'設置,可以影響(並可能破壞)很多事情;其中議案(w,e等),完成(您的問題在這裏),和語法突出顯示。

我建議保持原來的設置(畢竟,get_context_data作爲一個單一的變量也可能應該代表單個)。您可以使用我的camelcasemotion plugin來處理由下劃線分隔的片段。使用插件,您可以覆蓋原始動作和文本對象,也可以使用ca,w而不是caw

+0

+1這個插件 – Kent 2013-03-19 13:51:46

1

最好不要更改iskeyword選項。有很多命令需要它。如果你只是想編輯下劃線連接字符串(a_b_c_d)更容易,你可以試試這個映射:

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

與此對應(IU意味着在下劃線,你可以改變它)。例如,您可以

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) 

因爲映射不起作用字方式。你可以把它適合你需要但是。