🔤

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-lPascalCaseShift-lsnake_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