🔤
Helix エディタに PascalCase/snake_case にするショートカットキーを追加する。
できたもの

Ruby スクリプトを作成
以下のスクリプトを作成。
~/.local/bin/strutil
#!/usr/bin/env ruby
def snake_case(str)
str.gsub(/::/, '/')
.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
.gsub(/([a-z\d])([A-Z])/,'\1_\2')
.tr("-", "_")
.downcase
end
def pascal_case(str)
str.scan(/[A-Za-z]+|[^A-Za-z]/).map{|s|
snake_case(s).split(/_|-/).map(&:capitalize).join
}.join
end
txt = ARGV[1] || $stdin.read
case ARGV[0]
when 'snake_case'
print snake_case txt
when 'pascal_case'
print pascal_case txt
else
print txt
end
標準入力で動くことを確認。(一応、引数でも行けるようにした。)
$ echo foo-bar | strutil pascal_case
FooBar
$ echo foo-bar | strutil snake_case
foo_bar
$ strutil pascal_case foo-bar
FooBar
$ strutil snake_case foo-bar
foo_bar
Helix エディタに設定を追加
以下のように設定し、Ctrl-l で PascalCase、Shift-l で snake_case になるようにした。
~/.config/helix/config.toml
[keys.normal]
"L" = [
":pipe strutil snake_case"
]
"C-l" = [
":pipe strutil pascal_case"
]
[keys.select]
"L" = [
":pipe strutil snake_case"
]
"C-l" = [
":pipe strutil pascal_case"
]
以上です。
Discussion