本地windows11,使用vscode远程连接Centos7.9
远端Linux因为别的原因必须保持终端是GB18030(gbk的父集),但是vscode的终端没办法切换成gb18030。这就会导致vscode这边的终端中文都会乱码。
我的解决方案是使用luit luit – Locale and ISO 2022 support for Unicode terminals
安装
通过yum安装的luit使用会崩溃,所以需要编译安装
下载后执行下面的命令在远端Linux编译安装
./configure
# 如果要指定安装位置,则指定 --prefix= 参数即可
make -j8
make install
之后应该可以使用luit命令了
使用
在vscode的远程linux终端中,执行luit -encoding gb18030 ssh user@127.0.0.1
就会原地再套一个终端,但是这时候luit会把原先的输出转码为utf8,所以此时vscode不会乱码了
自动化
接着,在.bashrc
中追加如下代码
# 你可以在 已打开的终端列表项 鼠标悬停窗口中加载的脚本(shellintegration-bash.sh)中找到这个变量
if [[ -n "${VSCODE_SHELL_INTEGRATION:-}" ]]; thenluit -encoding GB18030 ssh user@127.0.0.1
fi
这样vscode打开终端时会进入到luit中,但其他软件打开终端不受影响
为了免密码登录,还需要将.ssh
中的公钥添加到authorized_keys
中,这样就能实现无感知进入luit了