vim makro CamelCase küçük harf_with_underscores dönüştürmek için


12

CamelCase'i küçük harf_with_underscores ve tersi dönüştürmek için bir vim makro var mı?

Yanıtlar:


19

Tim Papa'nın abolish.vimarasında teneke dönüştürmek camelCase, MixedCase, snake_case, ve UPPER_CASE, hem de dönüştürme (tek yönlü) dash-case.

Herhangi imleci yerleştirin fooBar, FooBar, foo_bar, veya FOO_BARve kullanım

  • crc dönüştürmek fooBar
  • crm dönüştürmek FooBar
  • cr_veya
    crsdönüştürmekfoo_bar
  • cru dönüştürmek FOO_BAR
  • cr- dönüştürmek foo-bar

mükemmel çözüm
Neil G

Tim Pope harika. Pek çok harika eklenti.
Hendrik

6

Evet var ve bir bonus olarak karşıt yöne gitmek için bir tane var!

Gitmesi durumunda wiki'den alıntı:

" Change selected text from NameLikeThis to name_like_this.
vnoremap ,u :s/\<\@!\([A-Z]\)/\_\l\1/g<CR>gul

ve zıt yön için:

" Change selected text from name_like_this to NameLikeThis.
vnoremap ,c :s/_\([a-z]\)/\u\1/g<CR>gUl

Teşekkürler! Vimim hariç neredeyse mükemmel, CamelCase adının ilk harfini değiştirmiyor. Neden olduğundan emin değilim.
Neil G

Çok hoş. Yılanın deve yönüne doğru bu değişikliği yapmam gerektiğini buldum:vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
Jonah

1

lh-dev ayrıca adlandırma stilleri arasında dönüştürme komutları sağlar:

:NameConvert snake

imlecin altındaki kelimeyi snake_case biçimine dönüştürür.

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

kullanıcının dönüşümü onayladığı varsayılarak, her bir kalıp oluşumunu bir alıcı adına dönüştürür ( :h :s_flags)

Desteklenen stiller iki çeşittir:


1

Böyle bir komut oluşturdum:

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"

Önce değiştirmek istediğiniz bir dizeyi aramanız /nameToReplaceve ardından çalıştırmanız gerekir :Ctl; sonraki arama eşleşmesi gerçekleşir name_to_replace. Komut kendisini @@kayıt defterine koyar, böylece tuşuna basarak işlemi tekrarlayabilirsiniz @@.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.