回答:
ティム教皇の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
カーソルの下の単語をsnake_caseに変換します。
:%ConvertNames/\<m_\k\+(/getter/gc
ユーザーが変換を確認すると仮定して、パターンの各出現をゲッター名に変換します(:h :s_flags
)
サポートされるスタイルは次の2種類です。
私はこのようなコマンドを作成しました:
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
ます。コマンドはそれ自体を@@
レジスターに入れるので、を押してアクションを繰り返すことができます@@
。