कैमलकेस को लोअरकेस_विथ_संडर्सकोर्स में बदलने के लिए मैम मैक्रो


12

क्या CamelCase को लोअरकेस_विथ_संडर्सकोर्स और इसके विपरीत में परिवर्तित करने के लिए विम मैक्रो है?

जवाबों:


19

टिम पोप के 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

सही समाधान
— नील जी

टिम पोप कमाल हैं। इतने सारे महान प्लगइन्स।
— हेंड्रिक

6

हाँ वहाँ है , और एक बोनस के रूप में वहाँ एक है विपरीत दिशा के रूप में अच्छी तरह से जाने के लिए!

विकी से बोली कि अगर यह चला जाए तो:

" 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

धन्यवाद! यह लगभग सही है, मेरे vim को छोड़कर, यह CamelCase नाम के पहले अक्षर को नहीं बदलता है। मुझे यकीन नहीं है कि क्यों।
— नील जी।

बहुत अच्छा। मैंने पाया कि मुझे साँप के लिए ऊंट की दिशा में यह बदलाव करने की ज़रूरत थी:vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
— योना

1

lh-dev भी नामकरण शैलियों के बीच बदलने के लिए आदेश प्रदान करता है:

:NameConvert snake

कर्सर को स्नेक_केस के नीचे शब्द में बदल देगा।

:%ConvertNames/\<m_\k\+(/getter/gc

पैटर्न की प्रत्येक घटना को एक गेटर नाम में बदल देगा, यह मानते हुए कि उपयोगकर्ता परिवर्तन की पुष्टि करता है ( :h :s_flags)

समर्थित शैलियाँ दो प्रकार की हैं:


1

मैंने इस तरह एक कमांड बनाई:

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। आदेश खुद को @@रजिस्टर में रखता है ताकि आप दबाकर कार्रवाई दोहरा सकें @@।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.