web-dev-qa-db-ja.com

CamelCaseをlowercase_with_underscoresに変換するvimマクロ

CamelCaseをlowercase_with_underscoresに、またはその逆に変換するvimマクロはありますか?

12
Neil G

Tim Popeの abolish.vimcamelCaseMixedCasesnake_case、およびUPPER_CASEの間で変換でき、変換(1 -way)からdash-caseへ。

カーソルをfooBarFooBarfoo_bar、またはFOO_BARのいずれかに置いて使用します

  • crcに変換するにはfooBar
  • crmに変換するにはFooBar
  • cr_または
    crsfoo_barに変換します
  • cruFOO_BARに変換します
  • cr-に変換するにはfoo-bar
19
Chris Johnsen

はいあります そしてボーナスとして反対方向に行くものもあります!

それがなくなる場合に備えてウィキから引用してください:

" 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
6
Daniel DiPaolo

私は次のようなコマンドを作成しました:

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になります。コマンドはそれ自体を@@レジスタに入れるので、@@を押してアクションを繰り返すことができます。

1
Jake

lh-dev は、命名スタイル間で変換するコマンドも提供します。

:NameConvert snake

カーソルの下のWordをsnake_caseに変換します。

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

ユーザーが変換を確認したと仮定して、パターンの各出現をゲッター名に変換します(:h :s_flags

サポートされているスタイルは2種類あります。

1
Luc Hermitte