vscode wsl 远程模式下vim插件autoSwitchInputMethod自动切换不起作用

本文主要讲述 vscode 下的 vim 扩展插件(vscodevim)在 windows 下使用 wsl/ssh 远程开发时,自动切换输入法设置无效的问题。分析发现 scope 为 machine 的配置需在远程主机设置,还吐槽了 vscodevim 审核草率、少维护,也不推荐 vscode - neovim 插件。

vscode 下的 vim 扩展插件(vscodevim) 在 windows 下使用 wsl/ssh 远程开发时,设置的自动切换 windows 输入法无效,分析了下源码发现跟自动切换输入法相关的几个设置项,其 scope 被设置为了 machine:

https://github.com/VSCodeVim/Vim/blob/15dbe0b415f269a5be14dc74651a69b9334fba14/package.json#L1064

涉及到的设置项有:

  • vim.autoSwitchInputMethod.defaultIM
  • vim.autoSwitchInputMethod.switchIMCmd
  • vim.autoSwitchInputMethod.obtainIMCmd

翻阅 vscode 插件开发文档后了解到,当某个配置项的 scope 属性被设置为 machine 时,这意味着此配置项只在 vscode 核心具体工作的那台机器上生效,本地开发时自然是读取正常,但当进行 wsl/ssh 远程开发时,vscode 真正的核心(vscode-server)是在远程主机里工作的,本地可见的 vscode 只是个客户端或者说个空外壳,所以上述几个配置应该在远程主机中设置。

同时 vim 扩展插件的插件类型(extensionKind)被设置为了 ui 类,也就是说 vim 插件只工作 vscode UI 所在的地方,即只工作在客户端/空外壳上。

综上所述,进行远程开发时,vim 插件(其他插件也是这样)中提供的配置项,scope 属性为 machine 的配置需要在远程主机中设置,vscode 提供了这种操作的界面,如下图所示:

remote-vim-settings

需要注意的是,设置项的值应该跟在 windows 本地做开发的值是一样的,因为 vim 插件只工作在本地,只是需要从远程主机上读取这些配置(这一点设计的很奇怪)。

另外吐槽几句,vscodevim 这个插件目前是 vscode 中提供 vim 功能最完整的插件了,但是感觉 github 上的项目管理者对 PR 的审核很草率,经常引入进来新的 bug,让人头大。

而且感觉项目没什么人维护了,也不发布新版本,前端时间我提了个修复 bug 的 PR,来解决启用自动切换输入法功能时,按 s 或 c 键修改光标下的文本后,没有立即进入 insert 模式的问题,这导致继续输入后会有非预期的文本被替换掉,PR 早就合并了,但已经过去很长时间了,也没有新的 release 出来,上一个 release 版本是在 3 月初发布的,距今已经将近 4 个月。

github 上遗留了一大堆 issue 无人处理,已发布版本中各种小 bug 也没人修复,唉。

除了 vscodevim 另一个风评不错的 vim 插件是 vscode-neovim,安装体验了一把,着实还欠缺火候,不推荐使用。

<think>嗯,用户想知道如何在VSCode通过WSL远程连接时切换Python环境。首先,我需要回忆一下VSCodeWSL相关的配置步骤。记得VSCode有一个Remote - WSL扩展,允许用户在WSL环境中直接开发。然后,切换Python环境通常涉及到选择不同的解释器,对吧? 用户可能已经安装了多个Python环境,比如通过Anaconda或者虚拟环境。在WSL中,这些环境可能位于不同的路径下。在VSCode中,通常是通过命令面板选择解释器。但远程连接时,步骤会不会有所不同呢? 接下来,我需要确认如何打开命令面板。应该是Ctrl+Shift+P,然后输入“Python: Select Interpreter”。这时候,VSCode应该会列出所有可用的环境。但如果在WSL中,可能需要确保这些环境已经被正确安装并且路径可以被VSCode识别。 另外,用户可能会遇到问题,比如列表中没有显示预期的环境。这时候可能需要手动输入路径,或者检查环境是否在WSL的文件系统中正确配置。比如,如果用户使用conda环境,可能需要先激活环境,或者确保conda的路径被包含在WSL的PATH变量中。 还有,用户提到的引用中有关于Remote SSH的问题,虽然这里不是SSH而是WSL,但可能有些类似的问题,比如断开连接或者解释器无法选择。可能需要重新加载窗口或者重新连接WSL会解决。 另外,在配置launch.json的时候,设置正确的pythonPath也很重要,可能需要指定WSL中的Python路径。用户可能需要知道如何找到这些路径,比如通过which python或者conda env list命令。 最后,常见的问题可能包括路径错误、扩展未安装或者权限问题。需要提醒用户检查这些方面,并提供解决思路,比如重新安装扩展或者检查环境变量。 总结一下,步骤应该是:安装必要扩展,打开命令面板选择解释器,手动输入路径或配置launch.json,处理常见问题。同时,引用中的经验可能帮助用户理解潜在的问题和解决方案。</think>### 如何在 VSCode 通过 WSL 远程连接时切换 Python 环境 #### 步骤详解 1. **安装必要扩展** - 确保已安装 VSCode 的 [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) 扩展,用于连接 WSL 环境 - 安装 [Python 扩展](https://marketplace.visualstudio.com/items?itemName=ms-python.python),支持 Python 开发及环境管理[^2] 2. **连接 WSL 环境** - 在 VSCode 中按 `Ctrl+Shift+P` 打开命令面板,输入 `Remote-WSL: New Window` 或直接打开 WSL 目录 - VSCode自动加载 WSL 中的 Python 环境 3. **切换 Python 环境** - **方法 1:通过命令面板** 1. 按 `Ctrl+Shift+P` 输入 `Python: Select Interpreter` 2. 列表会显示 WSL 中所有已识别的 Python 环境(如系统 Python、conda 环境、虚拟环境) 3. 选择目标环境后,VSCode自动更新 `.vscode/settings.json` 中的 `python.defaultInterpreterPath`[^2] - **方法 2:手动指定路径** 若环境未自动识别,在设置中直接指定解释器路径: ```json "python.defaultInterpreterPath": "/path/to/your/python" ``` 例如 conda 环境路径通常为 `~/anaconda3/envs/<env_name>/bin/python` 4. **验证环境切换** - 打开终端(`Ctrl+`\`),输入 `which python` 确认当前使用的 Python 路径 - 运行代码片段测试环境是否生效 #### 配置调试环境 在 `.vscode/launch.json` 中指定 Python 路径: ```json { "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "pythonPath": "/path/to/target/python" } ] } ``` #### 常见问题处理 1. **环境未显示在列表中** - 确保环境已安装在 WSL 文件系统中(非 Windows 路径) - 尝试在 WSL 终端中执行 `conda activate <env_name>` 后重启 VSCode[^1] 2. **路径权限问题** - 使用 `chmod +x /path/to/python` 赋予执行权限 3. **扩展加载失败** - 重新安装 Remote-WSL 扩展或执行 `Remote-WSL: Reopen Folder in WSL` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值