- 2009-08-09 (日) 0:00
- Vim Hacks
Vimを使いこなすためには、自分でキーバインドを変更するのが第一歩です。ここではキーバインドの応用として、Sticky ShiftをVim上で再現する方法について考えます。
Sticky Shiftとは
Sticky Shiftの設定法
inoremap <expr> ; <SID>sticky_func()
cnoremap <expr> ; <SID>sticky_func()
snoremap <expr> ; <SID>sticky_func()
function! s:sticky_func()
let l:sticky_table = {
\',' : '<', '.' : '>', '/' : '?',
\'1' : '!', '2' : '@', '3' : '#', '4' : '$', '5' : '%',
\'6' : '^', '7' : '&', '8' : '*', '9' : '(', '0' : ')', '-' : '_', '=' : '+',
\';' : ':', '[' : '{', ']' : '}', '`' : '~', "'" : "\"", '\' : '|',
\}
let l:special_table = {
\"\<ESC>" : "\<ESC>", "\<Space>" : ';', "\<CR>" : ";\<CR>"
\}
let l:key = getchar()
if nr2char(l:key) =~ '\l'
return toupper(nr2char(l:key))
elseif has_key(l:sticky_table, nr2char(l:key))
return l:sticky_table[nr2char(l:key)]
elseif has_key(l:special_table, nr2char(l:key))
return l:special_table[nr2char(l:key)]
else
return ''
endif
endfunction
- Newer: Hack #55: 正規表現のメタ文字の扱いを制御する
- Older: Hack #53: 略語を定義する
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://vim-users.jp/2009/08/hack-54/trackback/
- Listed below are links to weblogs that reference
- Hack #54: VimでSticky Shiftを実現する from Vim-users.jp

