- 更新日: 2015年6月29日
- Vim
VimでSpaceを使った便利なキーバインド用vimrc設定
数日前に読んだ Vim の Tips のエントリーで、Leader を Space キーにする技が紹介されていました。自分も「Space(スペース)キー + 任意のキー」によるキーバインドを、以前から ~/.vimrc に設定して大変便利に使っているので、その中からいくつか紹介です。
Vimの生産性を高める12の方法 | 開発手法・プロジェクト管理 | POSTD
自分の場合は 「let mapleader = “\<Space>”」を使わずに、<Space> で直接指定するようにしています。
Space を使うキーバインド用の vimrc 設定
基本的に頻繁に使う操作・コマンドに対して、Space キーを使ったキーバインドを設定するようにしています。あ〜この操作 vim でしょっちゅう使ってるな〜と気付いたら、その都度追加していっている感じです。
~/.vimrc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
"************************************************** " <Space>* によるキーバインド設定 "************************************************** "-------------------------------------------------- " <Space>i でコードをインデント整形 map <Space>i gg=<S-g><C-o><C-o>zz "-------------------------------------------------- " <Space>v で1行選択(\n含まず) noremap <Space>v 0v$h "-------------------------------------------------- " <Space>d で1行削除(\n含まずに dd) noremap <Space>d 0v$hx "-------------------------------------------------- " <Space>y で改行なしで1行コピー(\n を含まずに yy) noremap <Space>y 0v$hy "-------------------------------------------------- " <Space>s で置換 noremap <Space>s :%s/ "-------------------------------------------------- " <Space>co で1行コメントアウト(Ruby形式) map <Space>co <S-i># <ESC> "-------------------------------------------------- " <Space>uc で1行アンコメント。コメントアウトの行頭の# を削除(Ruby形式) map <Space>uc ^xx<ESC> "-------------------------------------------------- " Ctrl + v で複数行を矩形選択後、<Space>co で複数行コメントアウト(Ruby形式) vmap <Space>co <S-i># <ESC> "-------------------------------------------------- " 最初にヤンクした文字列を繰り返しペースト vnoremap <Space>p "0p " -------------------------------------------------- " <Space>cd で編集ファイルのカレントディレクトリへと移動 command! -nargs=? -complete=dir -bang CD call s:ChangeCurrentDir('<args>', '<bang>') function! s:ChangeCurrentDir(directory, bang) if a:directory == '' lcd %:p:h else execute 'lcd' . a:directory endif if a:bang == '' pwd endif endfunction " Change current directory. nnoremap <silent> <Space>cd :<C-u>CD<CR> |
いちいち打つと面倒くさいけど頻繁に使う操作に、「Space + 任意のキー」をバインドしておくととても捗るかと思います。
Leader に Space を割り当てる場合
「let mapleader = “\<Space>”」を最初に書いて、その後の Space の部分を Leader に置換するとOKです。これで Leader に Space が割り当てられた状態になり、実際には Leader の部分が Space に置き換わるので、上述の直接 Space を書いた方法と同じ挙動になる(はず)。
~/.vimrc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
"************************************************** " <Leader>* によるキーバインド設定 "************************************************** let mapleader = "\<Space>" "-------------------------------------------------- " <Leader>i でコードをインデント整形 map <Leader>i gg=<S-g><C-o><C-o>zz "-------------------------------------------------- " <Leader>v で1行選択(\n含まず) noremap <Leader>v 0v$h "-------------------------------------------------- " <Leader>d で1行削除(\n含まずに dd) noremap <Leader>d 0v$hx "-------------------------------------------------- " <Leader>y で改行なしで1行コピー(\n を含まずに yy) noremap <Leader>y 0v$hy "-------------------------------------------------- " <Leader>s で置換 noremap <Leader>s :%s/ "~~~ 以下省略 ~~~ |
Leader を使う場合の設定は以上です。後半は Space を Leader に置き換えるだけなので省略。
Space キーを使ったショートカットの設定は、昔どこかで読んだ Vim の Tips 紹介ページがきっかけだったように記憶しています。そのページがどれだったかはもう分かりませんけど。改めて検索してみたところ、結構有名な Vim の Tips っぽいです。
- Vim の関連記事
- Vimでカーソル下の文字列をgrep(vimgrep)する.vimrc設定
- VimでURLをブラウザで開く
- Vimで正規表現の後方参照を使って置換
- CoffeeLintのインストール・Vimで使う設定
- scss-lintのインストール・Vimで使う設定
- Vimでインデント/タブ幅をファイル拡張子ごとに設定
- RuboCopをVimで使う設定(Syntastic/プラグイン)
- You must install neosnippet-snippets or disable runtime snippets(Vim)
- neobundle#rc() is removed function エラー(Vim)
- Vimで行を結合、複数行を一発で連結する
Leave Your Message!