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


12

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

回答:


19

ティム教皇のabolish.vim缶の中で変換camelCaseMixedCasesnake_case、およびUPPER_CASE、同様に変換(片道)dash-case

いずれかにカーソルを置きfooBarFooBarfoo_bar、またはFOO_BARと使用

  • crc 変換する fooBar
  • crm 変換する FooBar
  • cr_または
    crsに変換するfoo_bar
  • cru 変換する FOO_BAR
  • cr- 変換する foo-bar

完璧なソリューション
Neil G

ティム・ポープは素晴らしいです。非常に多くの素晴らしいプラグイン。
Hendrik

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を除いて、それはほぼ完璧ですが、キャメルケース名の最初の文字は変更されません。理由はわかりません。
Neil G

非常に素晴らしい。:私はラクダ方向へのヘビのため、この変更を行うのに必要見つけたvnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
ヨナ

1

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

:NameConvert snake

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

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

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

サポートされるスタイルは次の2種類です。

  • 正確なスタイル(snake_case、UpperCamelCase、lowerCamelCase)
  • 現在のプロジェクトの命名規則に合わせて調整できるセマンティックスタイル(ローカル、グローバル、メンバー、パラメーター、ゲッター、セッター、定数、静的、関数、タイプなど)。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.