जवाबों:
टिम पोप के abolish.vim
बीच में बदल सकते हैं camelCase
, MixedCase
, snake_case
, और UPPER_CASE
, साथ ही करने के लिए परिवर्तित (एक तरह से) dash-case
।
में से किसी पर कर्सर fooBar
, FooBar
, foo_bar
, या FOO_BAR
और उपयोग
crc
में परिवर्तित करने के लिए fooBar
crm
में परिवर्तित करने के लिए FooBar
cr_
या crs
में परिवर्तित करने के लिएfoo_bar
cru
में परिवर्तित करने के लिए FOO_BAR
cr-
में परिवर्तित करने के लिए foo-bar
हाँ वहाँ है , और एक बोनस के रूप में वहाँ एक है विपरीत दिशा के रूप में अच्छी तरह से जाने के लिए!
विकी से बोली कि अगर यह चला जाए तो:
" Change selected text from NameLikeThis to name_like_this.
vnoremap ,u :s/\<\@!\([A-Z]\)/\_\l\1/g<CR>gul
और विपरीत दिशा के लिए:
" Change selected text from name_like_this to NameLikeThis.
vnoremap ,c :s/_\([a-z]\)/\u\1/g<CR>gUl
vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
lh-dev भी नामकरण शैलियों के बीच बदलने के लिए आदेश प्रदान करता है:
:NameConvert snake
कर्सर को स्नेक_केस के नीचे शब्द में बदल देगा।
:%ConvertNames/\<m_\k\+(/getter/gc
पैटर्न की प्रत्येक घटना को एक गेटर नाम में बदल देगा, यह मानते हुए कि उपयोगकर्ता परिवर्तन की पुष्टि करता है ( :h :s_flags
)
समर्थित शैलियाँ दो प्रकार की हैं:
मैंने इस तरह एक कमांड बनाई:
command! Ctl
\ exec "norm \"xygn" |
\ let @y = substitute(@x, "\\([^A-Z]\\)\\([A-Z]\\)", "\\1_\\2", "g") |
\ let @y = tolower(@y) |
\ exec "norm cgn\<C-r>y" |
\ let @@ = ":Ctl\n"
आपको पहले एक स्ट्रिंग की खोज करनी होगी जिसे आप बदलना चाहते हैं /nameToReplace
और फिर आप चलाते हैं :Ctl
, और अगला खोज मैच बन जाएगा name_to_replace
। आदेश खुद को @@
रजिस्टर में रखता है ताकि आप दबाकर कार्रवाई दोहरा सकें @@
।