Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

WindowsのGVimの:terminalから色々なシェルを使う

$
0
0

はじめに

最近、vimに実装された:terminalが便利そうなのでWindowsから色々いじってみました。
Windows版はvim/vim-win32-installerからzipをダウンロードできます。

gvim-terminal.png

上のキャプチャではVimを4つに分割してそれぞれ以下のシェルを動かしています。

Git Bashコマンドプロンプト
WSL BashPowerShell

: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を実行しようとすると以下の理由で色々設定が必要でした。

  • LANGja_JPja_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つのウインドウにまとめられるのが便利でした。

参考リンク


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>