let mapleader="\<Space>"
nnoremap <Leader>code :!code %:p<CR>
「あ、こいつ勝てないな(vimじゃ)」って思ったらVSCodeを召喚する
という事もできる。昔、私はこういうvimrcをしていましたが、最近は超ダイエットしました(dotfiles)。コマンドに慣れたらvimは最低限でいいよなーとか、VSCodeのsshfsはPluginもSnippetsも全部生きたままリモートで開発できるしVSCodeに移行しました。で、色々最低限にする内にmapleaderだけは多用してたので復習がてら。
mapleaderについての復習
mapleader
はvim操作を劇的に早くしてくれる設定です。 [mapleaderに指定したキー]+[mapで指定した任意のキー]を押せば、どんな長くて覚えづらいコマンドもすぐ呼び出せます。
例1: 覚えられないけど便利なコマンドを簡単に呼び出す例
nnoremap <Leader>" viw<esc>a"<esc>bi"<esc>lel
こういう覚えづらいけど便利なコマンドも一撃で呼べるようになります。Space + "
で、カーソル上の単語を""
で囲んでくれるコマンドです。勿論<p>
で囲むようにhtmlタグも使えます。囲むタグを任意で入れる形(次の例のように関数化&input式)にすれば自作Surround.vimになりますね。Surround.vimの使い勝手にしっくり来ない場合はこうして自作できます。
例2: 長い処理を関数化して、一発で呼び出す例
letg:fzf_layout={'right':'~50%'}function! Rg()let string = input('Search String: ')call fzf#run(fzf#wrap({ \'source':'rg -lin '. string, \'options':'--preview-window bottom:50% --preview "rg -in '. string .' {}"'}))endfunction
nnoremap <Leader>rg :call Rg()<CR>
function化してそれをmapleaderで呼び出す事もできます。こちらは自作コマンドでSpace+rg
でripgrepを召喚します。vim-fzfの組込コマンドが個人的にパッと来ないのでpreviewなどつけてSpaceで召喚できるようにしました。
例3: ターミナルコマンドを一発で呼び出す例
nnoremap <Leader>code :!code %:p<CR>
冒頭のコマンドです。vimは:!
の後にターミナルコマンドを続ける事ができます。そして、今回codeの後に続けてる%:pですがこれは現在開いているファイルのフルパスを渡してくれるvim変数です。
これが可能なのでこういうmapleaderも作成可能です。(autocmd Bufwrite以外にも)
nnoremap <Leader>perlc :!perl -c %:p<CR>
nnoremap <Leader>gofmt :!go fmt %:p<CR>
# 特定のファイルタイプの時のみ設定反映したいならautocmd Filetypeを使う
autocmd FileType perl nnoremap <Leader>perlc :!perl -c %:p<CR>
autocmd FileTypego nnoremap <Leader>gofmt :!go fmt %:p<CR>
その他にもこれだけのvim変数が存在しますので、興味がある方は参考にしてみてください。
コマンド名 | 説明 |
---|---|
@% | ファイルの相対パス |
%:t | ファイル名 |
%:p | ファイルの絶対パス |
%:p:h | ファイルのディレクトリ名 |
%:r | 拡張子抜きのファイル名 |
%:e | ファイルの拡張子 |
例4: お手軽で簡単だけど便利な例
nnoremap <Leader>w:w<CR>
nnoremap <Leader>ee :e<CR>
nnoremap <Leader>qq :q!<CR>
nnoremap <Leader>wq:wq<CR>
nnoremap <Leader>nn :noh<CR>
nnoremap <Leader>t:tabnew<CR>
nnoremap <Leader>s :<C-u>split<CR>
nnoremap <Leader>v:<C-u>vsplit<CR>
英字キーボードでコロン打つのが面倒な人に嬉しいお手軽ショートカットです。Space + w
だけでファイル保存が可能です。
ドキュメント
https://vim-jp.org/vimdoc-ja/map.html
総観
自作する必要のない状態が個人的に一番楽なのですが(jetbrain系みたいな導入時点で完成してるやつ)、たまに振り返ってコネコネvimrcをカスタマイズしてるのも楽しいですね。