config.nu
中添加了一个自定义命令
def ngr [] {
cd c:/SoftWare/Nginx
nginx.exe -s reload
}
添加到我的nvimconfig.当我尝试使用
vim.opt.sh = "nu"
:时
有没有办法在neovim中运行我的自定义nushell命令?
我相信您正在遇到一些误解,缺少信息,甚至是Nushell错误(或至少缺少功能)的组合。 summary推荐
您需要修复Windows Neovim配置以允许非CMD壳(请参阅下面的“ Windows vs. Linux/MacOS Neovim差异”)。
添加一个源文件(
:!nu -c "ngr"
c:/SoftWare/Nginx/nginx.exe -s reload
$NU_LIB_DIRS
首先,您没有提及使用ZSH执行此操作时定义
:!source ngr
命令的位置。 似乎它不是在ZSH启动文件中定义的函数,因为如果是,则应该与该ZSH Commandline有相同的问题。大多数外壳(包括bash,zsh,fish和nushell)
don't在使用
ngr
这使我相信您在ZSH中的command可能是路径上的脚本...但是...windows vs. Linux/MacOS差异
~/.zshrc
<shell> -c "<commandstring>"
ngr
。
如果您在Linux,Nushell应该做同样的事情。
windows vs. Linux/MacOS Neovim差异
我不会声称自己是Neovim专家,但据我所知,Windows Neovim的配置是将其使用CMD作为外壳的假设。 这意味着它将ngr
用作默认命令标志。 在Linux上,它使用
zsh -c "ngr"
,因为这是大多数壳使用的。 Nushell使用ngr
。 如果您尝试在Windows Nushell下使用git bash。因此,如果从基于 *NIX的系统切换到Windows,则需要更新Neovim配置以处理Nushell(和其他非CMD Shells)标志。 Neovim Repo中的此线程courtesy。
/s
然后尝试
-c
。如果您看到Nushell样式目录列表,那么您就近一步。
nushell即使使用-c
时也不会处理启动配置
可能是一个错误 - 恕我直言,至少是一个缺失的功能。我很惊讶我还不知道这一点,否则我会试图修复它。这是一个旧问题 -#7442。
如果这已经到位,则可以是:
init.lua
将加载您的启动配置,其中定义自定义命令然后运行它。 我将努力获取固定/添加(披露 - 我是Nushell的贡献者和(最近的)核心团队成员)。 这是从所以这可能不是最有效的解决方案。 我仍然可能推荐...
端nushell Windows上最简单的解决方案可能就是将其简单地定义为with to to的文件,然后将其放入您的
vim.opt.sh = 'nu'
vim.opt.shellcmdflag = '-c'
vim.opt.shellquote = ""
vim.opt.shellxquote = ""
中。 默认情况下,Nushell将在您的配置目录下的
:source init.lua
目录中查找源文件,因此:in-i
,仅添加以下(无自定义命令
:!nu -ic "ngr"
):source
避免文件,然后
$NU_LIB_PATH
应该为重新加载ngnix工作。