もた日記

くだらないことを真面目にやる

Vimメモ : switch.vimで文字列を楽々切り替え

switch.vimプラグイン


github.com

switch.vimというプラグインを使うと、例えばtruefalseの切り替えがキー操作で簡単にできるようになる。

インストール方法


NeoBundleの場合は下記行をvimrcに追加。

NeoBundle 'AndrewRadev/switch.vim'


使い方


インストールが完了すると:Switchというコマンドが使えるようになっている。例えば、下記テキストのtrueにカーソルを置いた状態で:Switchコマンドを実行すると、falseに、もう1回実行するとtrueに切り替わる。デフォルトではgsキーにコマンドがマッピングされているのでgsをタイプするのがよい。

flag = true


キーマッピングの変更


キーマッピングを変更したい場合は下記のような行をvimrcに追加する。この場合は-キーを押せば切り替えができるようになる。

let g:switch_mapping = "-"


デフォルトで設定されている定義の例



デフォルトで設定されている切り替え定義の例には以下のようなものがある。詳細なリストは下記リンクを参照。

switch.vim#builtins
ソースコード

全般

  • 条件
foo && bar
foo || bar
  • true/false
flag = true
flag = false

flag = True
flag = False

Ruby

  • Hash
foo = { :one => 'two' }
foo = { one: 'two' }
  • if文
if predicate?
  puts 'Hello, World!'
end

if true or (predicate?)
  puts 'Hello, World!'
end

if false and (predicate?)
  puts 'Hello, World!'
end
  • Rspec should/should_not
1.should eq 1
1.should_not eq 1
  • 文字列
foo = 'bar'
foo = "baz"
foo = :baz

Eruby

  • if文
<% if predicate? %>
  <%= 'Hello, World!' %>
<% end %>

<% if true or (predicate?) %>
  <%= 'Hello, World!' %>
<% end %>

<% if false and (predicate?) %>
  <%= 'Hello, World!' %>
<% end %>
  • タグ
<% something %>
<%# something %>
<%= something %>
  • Hash
<% foo = { :one => 'two' } %>
<% foo = { one: 'two' } %>


カスタマイズ


オリジナルの設定を追加したい場合は以下のような設定をvimrcに追加する。この場合はキーを押すごとにfoobarbazが切り替わる。

let g:switch_custom_definitions =
    \ [
    \   ['foo', 'bar', 'baz']
    \ ]

もう少し複雑な書き方としては以下のようなものがある。この場合はerubyファイルタイプで:foo =>foo:が交互に切り替わるようになる(fooは任意の文字列)。

autocmd FileType eruby let b:switch_custom_definitions =
    \ [
    \   {
    \     ':\(\k\+\)\s\+=>': '\1:',
    \     '\<\(\k\+\):':     ':\1 =>',
    \   },
    \ ]

実践Vim 思考のスピードで編集しよう!

実践Vim 思考のスピードで編集しよう!