Ubuntu 20.04 正确安装支持中文输入的 VS Code

工欲善其事,必先利其器.

——《论语·卫灵公》

最近发现VS Code不能输入中文,这对使用Code写Markdown的我伤害颇深,写blog都要markdown online然后线下rewrite就动力不足了.

经过几番发现症结所在,记录以下以备他人不时之需.

VS Code无法输入中文

不能输入中文的版本仅仅存在通过snap安装的版本,可能是snap的快照设置本身的不兼容性,也可能是查阅资料说快捷键冲突.对我在Ubuntu 20.04上的具体表现是:忽然间(不明白触发条件),输入延迟极大,键盘失灵一般的感觉,然后如果等待很久真的能看到输入……

解决方法其实很简单,通过添加MS官方软件库,使用apt安装VS
Code就可以避免这个问题.是不是很神奇….

1
2
3
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt update && sudo apt install code

snap商店和快照包

Snap软件包最初是为Ubuntu设计的,但现在可以在各种Linux发行版中使用。

过去,在Linux上安装应用程序可能会令人沮丧。您只会安装一些东西来查找特定的库或其他依赖项丢失或过时。然后,您将寻找缺少的资源并进行安装,只是找到另一个应用程序,该应用程序取决于您刚替换的库的版本。解决一个,打破一个,重复一次。

有了更好的软件包管理系统(如apt,dnf和pacman),这种情况得到了改善 。但是,如果需要安装同一应用程序的不同版本,则仍会遇到困难。或者,如果您使用两个冲突的应用程序,因为它们与库的特定(但不同)版本相关联。

解决这些问题的一种方法是应用程序打包和部署系统。Snappy是其中比较流行的一种。它基于名为Click的打包和部署系统,可追溯到 Ubuntu Touch计划。 您可能会遇到过AppImage和FlatPack。

这些系统将应用程序以及所有依赖项和其他要求封装在一个压缩文件中。然后,该应用程序将在一种小型容器中运行。它已沙盒化,并与其他应用程序分离。应用程序打包或需要的库和其他资源仅可单独使用。

它们不是传统意义上的安装,因此对于需要相同资源不同版本的其他应用程序不会造成任何问题。您甚至可以安装和运行需要冲突库版本的应用程序,因为每个应用程序都在其自己的沙箱中。

但是,如果未按常规方式安装它们,该如何处理?好了,将单个软件包文件下载,解压缩并安装为SquashFS虚拟文件系统。然后将其作为虚拟环境呈现给您。所有这些都是在后台进行的。您只知道已经安装了一个应用程序,现在就可以访问它。

当然,由于每个程序包文件都必须包含应用程序需要的每个资源,因此程序包文件可能很大。复制通常只安装一次的资源也很容易,例如MySQL或Apache。如果两个不同的snap应用程序需要相同的资源,则它们各自带来自己的副本。

但是,这是为了简化安装和消除资源冲突难题的折衷方案。

Reference

  1. unable to input chinese chars on ubuntu 19.10
  2. How to Work with Snap Packages on Linux