无法识别来自 Vim 的外部命令,包括 'ls' 和 'pwd'

External commands from Vim are not recognized, including 'ls' and 'pwd'

我还在学习 vim,在我的 vim 辅导课期间,我写了 :!ls 但找不到了。我也试过 :sh 效果很好,但我不明白为什么使用爆炸符号不会

编辑:我错了。 ':sh' 调出 shell 但 ls 和 pwd 仍然不适用于 shell

的那个实例

edit2:我一直在使用 Powershell,现在意识到 lspwd 不是 cmd 可用的命令。我加了

set shell=powershell.exe
set shellcmdflag=-c
set shellpipe=>
set shellredir=>

into _vimrc 从这个问题中闪现:Vim with Powershell

:! in vim 通过 'shell'.

运行给定的命令

在 Windows 这是 cmd.exels 不是 Windows 上的有效命令。因此 :!ls 不适用于 Windows。

:!dir,另一方面,会。

您混淆了添加到 :w! 等命令的 "bang" 和单独的 :! 命令,后者将余数传递给 shell 。 (此外,许多内置命令,如 :ls:pwd 由 Unix 上常见的 shell 命令命名 / Linux。)

如果你在 Windows,你根本就没有像 lspwd 这样的常见 Linux 命令。(等价物分别为 direcho %CD%

如果你安装一个 Unix 仿真层,如 CygwinGNU Win32 项目提供的那样,你将获得相应的二进制文件(ls.exe) 然后可以调用 then(或者甚至重新配置 Vim 的 'shell' 选项以使用这样的 shell)。