Skip to content
Bruno Heridet edited this page Sep 14, 2017 · 17 revisions

How to make x select lines downward and X select lines upward.

more here

def -hidden -params 1 extend-line-down %{
  exec "<a-:>%arg{1}X"
}
def -hidden -params 1 extend-line-up %{
  exec "<a-:><a-;>%arg{1}K<a-x>"
}
map global normal x ":extend-line-down %val{count}<ret>"
map global normal X ":extend-line-up %val{count}<ret>"

How to make word keys discern camelCase or snake_case parts?

so when you want to select the word - you select it like textobject, more here

def -hidden select-prev-word-part %{
  exec <a-/>[A-Z][a-z]+|[A-Z]+|[a-z]+<ret>
}
def -hidden select-next-word-part %{
  exec /[A-Z][a-z]+|[A-Z]+|[a-z]+<ret>
}
def -hidden extend-prev-word-part %{
  exec <a-?>[A-Z][a-z]+|[A-Z]+|[a-z]+<ret>
}
def -hidden extend-next-word-part %{
  exec ?[A-Z][a-z]+|[A-Z]+|[a-z]+<ret>
}
map global normal w :select-next-word-part<ret>
map global normal W :extend-next-word-part<ret>

Conversion between common case conventions

# foo_bar → fooBar
# foo-bar → fooBar
# foo bar → fooBar
def camelcase %{
  exec `s[-_<space>]<ret>d~
}

# fooBar → foo_bar
def snakecase %{
  exec s[A-Z]<ret>`i_<esc>
}

# fooBar → foo-bar
def kebabcase %{
  exec s[A-Z]<ret>`i-<esc>
}
Clone this wiki locally