

Windows 10でNeovim (nvim-qt.exe)を実行し、`:Tutor`でチュートリアルを読んでいます。  
バージョンは0.8.1です。

`:!ls`を実行する指示があったので実行したところ、結果が以下のように文字化けします。

[code]

    'ls' <82> A<93> ...(以下続く)
    
[/code]

おそらく、コマンドプロンプト上で`ls`を実行したときの、

[code]

    'ls' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    
[/code]

がshift-jisでない文字コードで表示されたのだろうと予想してます。  
（`:!dir`でも、日本語だったであろう部分が化けることは変わりありませんでした。）

質問は2点あって、

  1. 文字が正しく表示されるための方法はありますか？
  2. `:!`によるコマンドがcmdでなくpwshで実行されるようにする方法はありますか？

です。


CC BY-SA 4.0
2022-12-05T15:10:14.840
92591
2022-12-07T01:45:07.563
2022-12-06T17:01:25.310
3060
52341
question
windows vim neovim
Windows の Neovim で外部コマンドの結果が文字化けする


部分回答、かつ実際に試したわけではありませんが、外部コマンドとして cmd の代わりに PowerShell
を呼び出す方法については、以下のような方法が紹介されていました。

`pwsh.exe` (PowerShell Core) を呼び出すには `set shell=pwsh` に置き換えれば良さそうです。

[How do I make neovim use Powershell for external
commands?](https://www.reddit.com/r/neovim/comments/vpnhrl/how_do_i_make_neovim_use_powershell_for_external/)

> You can paste these lines to your vimrc (vim: `C:\Users\<username>\_vimrc`,
> neovim: `C:\Users\<username>\AppData\Local\nvim\init.vim`) to make the
> change permanent. (Reopen vim to apply it)
[code]

>     set shell=powershell
>     set shellcmdflag=-command
>     set shellquote=\"
>     set shellxquote=
>  
[/code]


CC BY-SA 4.0
2022-12-05T16:23:10.277
92592
2022-12-05T16:23:10.277
3060
92591
answer


> :!によるコマンドがcmdでなくpwshで実行されるようにする方法はありますか？  
>  です。

neovimの変数shellにpowershellやpowershellのパス名を設定してみましたが、シェルをpowershellに変えることができませんでした。  
※この方法がだめという意図はありません。私がやってみてダメだったというだけです。

どうしてもpowershellのコマンドを実行したい場合は

[code]

    :!powershell pwd
    
[/code]

のようにpowershellと実行するコマンドを指定すればよいようです。

[![](https://i.stack.imgur.com/qNowV.png)](https://i.stack.imgur.com/qNowV.png)


CC BY-SA 4.0
2022-12-06T13:30:06.433
92604
2022-12-07T01:45:07.563
2022-12-07T01:45:07.563
3060
35558
92591
answer