侧边栏壁纸
博主头像
翠南山 博主等级

行动起来,活在当下

  • 累计撰写 11 篇文章
  • 累计创建 6 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

设置PowerShell作为nvterm的默认shell

居不正
2023-05-07 / 0 评论 / 0 点赞 / 38 阅读 / 0 字

背景

刚安装好neovim和nvchad之后,有个问题是使用Ctrl + h等命令出发的shell使用的是cmd.exe,如下图:

WindowsTerminal_qWLRNCLfEU.gif

但是个人偏向于使用powershell,因此,想把这个默认配置进行修改。先展示下成品:

WindowsTerminal_WYw9Oq1qPU.gif

设置

在设置之前,我们首先需要知道配置哪些插件或者内容才能修改这个部分。首先谷歌了一下,找到以下几个链接:

  1. (1) Use Powershell 7 as default - NVTerm : neovim (reddit.com)
  2. NvChad/nvterm: NvChad's Official Terminal Plugin (github.com)

从这两个链接可以知道,需要配置的部分有两个:

  1. nvterm的一些配置;
  2. vim.o.shell相关的设置;

根据nvchad的官方文档,个性化配置的目录位于:$HOME\AppData\Local\nvim\lua\custom中的相关文件中。如果是全局配置则设置init.lua,如果是插件配置则位于chadrc.lua中。

根据上面的链接2,我们检查下nvterm的配置说明

image.png

发现,其设定shellvim.o.shell,因此,比较明确的是,修改vim.o.shell即可。

根据链接1,查询shell-powershell的帮助,如下: image.png

按照上面进行尝试,把上面的指令依次输入到nvim的指令栏中: image.png

执行成功。

将上面指令修改为lua指令,如下:

local isWindows = function () 
  local arch = os.getenv("os")
  if string.match(arch, "Windows") then
    return true
  end
  return false
end

if isWindows() then
  local cmd = "pwsh.exe"
  local avaiable = vim.fn.executable(cmd) 
  vim.o.shell = avaiable and cmd or "powershell.exe"
  vim.o.shellcmdflag =  "-NoLogo -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues['Out-File:Encoding']='utf8';"
  vim.o.shellredir = '2>&1 | %%{ "$_" } | Out-File %s; exit $LastExitCode'
  vim.o.shellpipe = '2>&1 | %%{ "$_" } | Tee-Object %s; exit $LastExitCode'
  vim.o.shellquote = nil 
  vim.o.shellxquote = nil
end

将上面的代码复制到$HOME\AppData\Local\nvim\lua\custom\init.lua中即可。

0

评论区