はじめに
最近、vimに実装された:terminal
が便利そうなのでWindowsから色々いじってみました。
Windows版はvim/vim-win32-installerからzipをダウンロードできます。
上のキャプチャではVimを4つに分割してそれぞれ以下のシェルを動かしています。
Git Bash | コマンドプロンプト |
WSL Bash | PowerShell |
:terminal
のヘルプと概要はここから
以下、私の好みでオプションに++close
と++curwin
を指定しています。
コマンドプロンプトとPowerShellを動かすやつ
この2つは簡単です。
:terminal ++close++curwin
Windowsのデフォルトシェルはコマンドプロンプトなのでシェルを指定しなくてもよいです。
:terminal ++close++curwin powershell
PowerShellはデフォルトシェルではないので引数に指定します。
WSLのBashを動かすやつ
:terminal ++close ++curwin C:/WINDOWS/System32/bash.exe -c "cd; bash -l"
Windows側からWSLのホームディレクトリに移動できないので-c
オプションで移動後にbash
を起動しています。
シェル起動時のディレクトリがどこでもよいならこのオプションは不要です。
Git for WindowsのBashを動かすやつ
function! GitBash() " 日本語Windowsの場合`ja`が設定されるので、入力ロケールに設定しなおすletl:oldlang = $LANG
let $LANG = systemlist('"C:/Program Files/Git/usr/bin/locale.exe" -iU')[0]
" Git for Windowsに同梱されたvimで誤作動するのでvimが設定する環境変数を削除するletl:oldvim = $VIM
letl:oldvimruntime = $VIMRUNTIME
letl:oldmyvimrc = $MYVIMRC
letl:oldmygvimrc = $MYGVIMRC
let $VIM =''let $VIMRUNTIME =''let $MYVIMRC =''let $MYGVIMRC ='' " ホームディレクトリに移動するlcd $USERPROFILE
" :terminalでgit for windowsのbashを実行する
terminal ++close++curwin C:/Program Files/Git/bin/bash.exe -l " 環境変数とカレントディレクトリを元に戻すlet $LANG =l:oldlang
let $VIM =l:oldvim
let $VIMRUNTIME =l:oldvimruntime
let $MYVIMRC =l:oldmyvimrc
let $MYGVIMRC =l:oldmygvimrc
lcd-endfunctionnnoremap<Leader>g :<C-u>call GitBash()<CR>
:terminal
で起動したGit Bashから同梱のvimを実行しようとすると以下の理由で色々設定が必要でした。
LANG
をja_JP
やja_JP.UTF-8
のような値にしないとls
で日本語が出ない- GVimが設定した環境変数のままだとGit for Windowsに同梱されたvimのパスと合わなくてエラーになる
更に、以下のaliasを~/.bashrc
に設定しておくとremote - Vim日本語ドキュメントの機能を使って、Git Bash同梱のvimを使わずにGvimでファイルを開くことができます。
if [ -x <vim install folder>/vim.exe ]; then
alias vim="<vim install folder>/vim.exe --servername GVIM --remote"
fi
さいごに
minttyと比べると描画がちょっと遅かったり256色カラーにならなかったりと見劣りする部分はありますが、ターミナルのコピペをvimの操作で行ったり、複数のシェルを1つのウインドウにまとめられるのが便利でした。