📑

WindowsのNeovimで任意のPowerShellを起動する

2024/10/04に公開

はじめに

最近Windowsを使い始めたのですが,:terminalにてデフォルトで開かれるシェルがターミナルのそれとは異なっていました.

Neovimにてシェルを指定することで解決したので,共有します.

Not for me だった解決策

:terminal powershellにてPowerShellを指定できるようですが,私の場合これによって開かれたのは"Dveloper PowerShell for VS 2022"であり,ターミナルで使用していた"Windows PowerShell"とは別物でした.
"Windows PowerShell"の方はエイリアスやEmacsキーバインドなどの設定を行なっていたため,操作感に満足いきませんでした.

事前準備

ターミナルにて以下のコマンドを実行することで,今使っているPowerShellの実行ファイルのアドレスがわかります.

(Get-Process -Id $PID).Path

私の場合はC:\Program Files\PowerShell\7\pwsh.exeでした.

ここで,:terminal "C:\Program Files\PowerShell\7\pwsh.exe"にて指定したシェルにてターミナルを開くことができるはずです.

応用

毎回上記のコマンドを打つのは大変なので,設定ファイルに以下のコードを追記しておくと便利です.

:PS で指定したPowerShellを使えるようにする

init.lua
-- PowerShell
vim.api.nvim_create_user_command('PS', function()
  vim.cmd('terminal "C:\\Program Files\\PowerShell\\7\\pwsh.exe"')
end, {})

他OSとの設定の共存

私は次の記事を参考に:Tにてターミナルを起動するようにしており,他OSでも設定ファイルを共有しているため,以下の設定を利用しています.

https://zenn.dev/ryo_kawamata/articles/improve-neovmi-terminal

init.lua
vim.api.nvim_create_user_command('T', function(opts)
  vim.cmd('split')
  vim.cmd('wincmd j')
  vim.cmd('resize 20')
  if opts.args == '' and vim.fn.has('win64') == 1 then
    vim.cmd('terminal "C:\\Program Files\\PowerShell\\7\\pwsh.exe"')
  else
    vim.cmd('terminal ' .. opts.args)
  end
end, { nargs = '*' })

最後に

初めての書いた記事だったため拙い部分も多いかと思いますが,未来の自分とどなたかの役に立てば幸いです.

GitHubで編集を提案

Discussion