如何在NVIM命令行中执行Nushell命令? 我曾经在Neovim中使用此ZSH命令: :! ZSH -C“ ngr” 使用Nushell,我在config.nu中添加了一个自定义命令: def ngr [] { CD C:/software/nginx nginx.exe -s重新加载 } 并添加了vim ...

问题描述 投票:0回答:1
与Nushell,我在

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差异”)。 Neovim error添加一个源文件(:!nu -c "ngr"

),并在您的
neovim nushell
1个回答
0
投票
路径中的目录中使用

c:/SoftWare/Nginx/nginx.exe -s reload

$NU_LIB_DIRS
    在Neovim中重新加载nginx
  • 尾和背景
  • 运行命令串(或脚本)
    首先,您没有提及使用ZSH执行此操作时定义
    :!source ngr
    命令的位置。  似乎它不是在ZSH启动文件中定义的函数,因为如果是,则应该与该ZSH Commandline有相同的问题。
    
    大多数外壳(包括bash,zsh,fish和nushell)
    don't
    在使用
  • ngr
  • 运行时处理您的启动配置。 启动配置文件(a)自然使启动需要更长的时间,(b)(不应该,但)通常包含交互式输出(有时甚至是输入),您在运行一次性命令ststring时都不需要。
    这使我相信您在ZSH中的command可能是路径上的脚本...但是...
    windows vs. Linux/MacOS差异
在您提供的自定义命令中,您正在使用Windows路径。 这使我相信您可能一直在Linux或MacOS下使用ZSH,但是现在您正在Windows下运行Nushell。 如果是这样,则脚本的工作方式不同。 在Linux中,脚本可以具有Shebang行,该行告诉OS执行哪些程序。 据我所知,Windows没有此。

在Linux中的ZSH下,您可以使用以下方式运行一个

~/.zshrc

脚本(假设适当的shebang):

<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

目录中查找源文件,因此:

:!ls

in

-i

,仅添加以下(无自定义命令
:!nu -ic "ngr"

):
source

避免文件,然后
$NU_LIB_PATH
应该为重新加载ngnix工作。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.