系统配置与软件安装[持续更新……]

本文最后更新于 2024年10月17日 晚上

本文主要分享了Windows、Linux系统的配置与常用软件的安装。

官方文档一般比个人博客的说明要更详细。所以在下载和使用时可以优先参考官方文档,个人博客用作补充和处理特殊情况(报错,等)。

常用软件与工具汇总

网址或为软件/工具官网,或为安装教程。没有附带网址或为系统自带,或为使用破解版……

功能 Windows Linux Android
安装包管理 GDebiWine
版本管理 Git Git
哔哩哔哩网站视频下载工具 哔哩下载姬
C++ IDE CLionVisual Studio Code CLionVisual Studio Code
窗口置顶 Quicker-置顶 鼠标移到窗口标题栏,右键菜单选择置顶
CSDN资源下载 csdn_downloader csdn_downloader
大模型 大模型的使用技巧 大模型的使用技巧
底部任务栏 Plank
电视直播 my-tv
多媒体播放器 PotPlayer VLC VLC
分析函数调用关系 Understand Understand
gif录制 Quicker-gif录制
工具箱 Quicker
公式识别 Quicker-公式识别3
截图(钉在桌面) Quicker-截图 Flameshot
局域网工具 ZeroTier
截图OCR Quicker-截图OCR uTools-OCR文字识别
快捷键管理 Microsoft PowerToys
Latex TeXstudio + TeXLive TeXstudio + Texlive
浏览器 Microsoft Edge、Google Chrome Microsoft Edge
Markdown编辑器和阅读器 Typora Typora
Office Microsoft Office(激活工具 LibreOffice
PDF阅读器 Acrobat Pro DC(卸载工具:Adobe Creative Cloud Cleaner Tool Okular
批量重命名 Quicker-批量重命名
屏幕亮度调节 Brightness Controller
屏幕录制 OBS-Studio SimpleScreenRecorderOBS-Studio
PPT插件 iSlide
Pytorch PytorchCUDAcuDNN
Python管理 Anaconda Anaconda
Python IDE PyCharmVisual Studio Code PyCharmVisual Studio Code
任务管理器 [Mission Center](#Mission Center)
日记 eDiary
Steam加速器 Watt Toolkit
鼠标驱动 Logitech G HUB Piper
输入法 搜狗输入法 搜狗输入法 搜狗输入法
跳过广告 gkd
图表绘制 draw.io、XMind draw.io、XMind
VPN VC喵(流量购买)、v2rayN(客户端) VC喵(流量购买)、clash
文本编辑器(轻量级) Notepad++ Gedit(配合其插件使用)
文件检索 EverythingAnyTXT Searcher find命令、FSearch
文献翻译阅读器 知云文献翻译 Zotero
Windows右键菜单管理 ContextMenuManager
系统备份 系统还原点 命令行Systemback
系统镜像 MSDN
下载器 迅雷IDM
显卡驱动程序 NVIDIA
消息通讯 QQ微信腾讯会议 [QQ](#QQ Linux版)、微信微信文件传输助手网页版 QQ、微信、腾讯会议
虚拟机 VMware
压缩包管理 Bandzip Pigz
验机、电脑性能测试 图拉丁吧工具箱
硬盘管理 DiskGenius GParted
游戏 SteamSteamDBXbox
远程控制 ToDesk微软远程桌面 ToDesk ToDesk
资源管理 百度网盘 百度网盘 百度网盘
终端 Anaconda PowerShell Prompt Terminator+zsh
终端摸鱼 genact genact

浏览器插件

Linux系统配置

双系统

Win10安装Ubuntu18.04双系统,图文详解,全网最详细教程

Windows会故意搞坏Linux的启动项,使得Linux无法启动,所以Linux只能后装;然后Linux安装后,grub会自动找到Windows,把它的启动项放在启动列表末尾,如果你不修改grub-config的话,默认会启动到Linux。

教你彻底卸载Ubuntu双系统,去污不残留

安装WiFi驱动

在Windows下新装的双系统Linux Ubuntu18.04无法连接WiFi(桌面右上角下拉菜单里没有WiFi设置参数选项,设置里WiFi模块提示找不到WiFi适配器),尝试了各种方法(附在最后),无果。最终,发现是网卡驱动与系统内核版本的问题。

实现步骤

  1. 查看网卡驱动版本:切换到Windows系统-设备管理器-网络适配器-Intel(R)Wi-Fi 6E AX211 160MHz(我自己的)

  2. 切换回Linux系统。给电脑连接有线网:如果有网线的话可以直接给电脑插网线联网;没有的话将手机通过数据线连接到电脑上,在手机上打开设置-无线和网络-移动网络共享-打开USB共享网络(华为手机,其他品牌手机类似),可以看到Ubuntu界面右上角出现了一个品字形的有线网络连接图标。

  3. 更新软件列表:

    1
    sudo apt-get update
  4. 安装依赖包:

    1
    sudo apt install flex bison
  5. 克隆、编译和安装backport-iwlwifi

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 克隆
    git clone https://github.com/intel/backport-iwlwifi.git
    # 注意backport-iwlwifi文件夹下载后就放在/home目录下,不然sudo make defconfig-iwlwifi-public会报错?
    cd backport-iwlwifi
    cd iwlwifi-stack-dev
    # 编译和安装
    sudo make defconfig-iwlwifi-public
    sudo make
    sudo make install

    报错:执行sudo make defconfig-iwlwifi-public命令时,提示make: *** 没有规则可制作目标“defconfig-iwlwifi-public”。 停止。

    原因:make menuconfig命令需要进入内核源码目录才能使用,否则会提示以上错误。

    解决:参考链接

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sudo apt-get install linux-source  # 按照提示下载最新版本的内核源码
    cd /usr/src/ # 下载的源码在/usr/src目录中,进入该目录
    # 将文件解压到/home/kernel目录下
    sudo tar xvjf linux-source-4.15.0.tar.bz2 -C /home/kernel
    # 如果提示没有该文件夹,执行以下命令直接新建kernel文件夹
    cd /home
    sudo mkdir kernel
    # 进入 /home/kernel/linux-source-4.15.0文件夹
    cd /home/kernel/linux-source-4.15.0
    sudo make menuconfig
    # esc退出保存即可
  6. 下载驱动程序。

    终端执行以下命令下载AX210 WIFI驱动程序:

    1
    2
    3
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git  # 下载的文件数目较多,有900多M,时间较长,请耐心等待。
    cd linux-firmware/
    sudo cp iwlwifi-* /lib/firmware/

    也可直接从Intel Linux WiFi驱动官网下载驱动程序,解压后将ucode文件复制在/lib/firmware下。

  7. 重启系统,重要文件请提前保存。

  8. 重启后可以看到Ubuntu18.04桌面右上角下拉菜单出现Wi-Fi连接图标,正常连接即可。

其他参考链接

NVIDIA显卡驱动

NVIDIA显卡驱动

安装蓝牙驱动

我的电脑网卡是Intel(R)Wi-Fi 6E AX211 160MHz,因为蓝牙模块太新和Ubuntu18.04版本太老,自己尝试了各种方法,无果。结论写在这,Linux系统还是要尽量少折腾。如果有成功的解决方案十分欢迎在下方评论区留言。

安装触摸板驱动

我的电脑触摸板是Synaptics PrecisionTouchpad Filter Driver,因为触摸板模块太新和Ubuntu18.04版本太老,自己尝试了各种方法,无果。结论写在这,Linux系统还是要尽量少折腾。如果有成功的解决方案十分欢迎在下方评论区留言。

安装声卡驱动

我的电脑声卡是Realtek(R) Audio,因为声卡模块太新和Ubuntu18.04版本太老,自己尝试了各种方法,无果。结论写在这,Linux系统还是要尽量少折腾。如果有成功的解决方案十分欢迎在下方评论区留言。

挂载硬盘

  1. Win+A打开应用程序列表,找到并打开Disk。

  2. 找到硬盘分区,设置自动挂载。

  3. 以后,开机后,打开资源管理器-其他位置,点击一下已经检测到但是还没有被挂载的硬盘分区就好了。

    1
    2
    Windows	/dev/nvme0n1p3
    Data /dev/nvme1n1p2
  4. 完成。

安装鼠标驱动

我使用的鼠标是Logitech G502,但是Logitech的鼠标驱动Logitech G HUB只提供了Windows和Mac版。当然,我相信Piper提供的鼠标驱动不止适用于这款鼠标。

锁屏不熄屏

短按Win+L会锁屏,然后关显示器; 按Win+L持续几秒钟(屏幕会一闪),就会采用你设置的关屏时间(设置里面的电源选项里面),设置成never就永远亮着了。

更换壁纸

  1. 把壁纸放到~/Pictures文件夹下。
  2. 设置-背景-背景(B)/锁定屏幕(L)-图片-选择。

新建快捷键

设置-设备-键盘-翻到底部:添加

名称 命令 快捷键
control-center gnome-control-center Win+I
打开文件夹 nautilus /home/lll25655/ Win+E
fsearch fsearch Ctrl+Alt+F
flameshot flameshot gui Ctrl+Alt+A

Gnome插件

  • Clipboard Indicator
    • 最流行的 GNOME 剪贴板管理器,下载量超过 100 万次。
  • Coverflow Alt-Tab
    • 替换 Alt-Tab,以覆盖流方式迭代窗口。
  • Recent Items
    • 在顶部面板添加最近使用的项目的图标。
  • Unite
    • Unite 是一个 GNOME Shell 扩展,它对顶部面板进行了一些布局调整并删除了窗口装饰,使其看起来像 Ubuntu Unity Shell。
  • User Themes
    • 从用户目录加载 shell 主题。

电源模式

基本模式

在Linux中,内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的,它就是CPU Freq系统。如下为CPU的几种模式(governor参数):官方文档

  • ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand
  • powersave:省电模式,通常以最低频率运行。
  • performance:性能模式!只有最高频率,从来不考虑消耗的电量,性能没得说,但是耗电量。
  • interactive:交互模式,直接上最高频率,然后看CPU负荷慢慢降低,比较耗电。Interactive 是以 CPU 排程数量而调整频率,从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率,不会过度把频率调低。所以比 Interactive 反应好些,但是省电的效果一般。
  • conservative:保守模式,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式。
  • smartass:聪明模式,是I和C模式的升级,该模式在比interactive模式不差的响应的前提下会做到了更加省电。
  • userspace:用户自定义模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置。
  • Hotplug:类似于ondemand, 但是cpu会在关屏下尝试关掉一个cpu,并且带有deep sleep,比较省电。

查看cpu所有核所处模式:

1
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor  # 有多少个CPU会显示多少个模式

较新的linux版本对於Intel的处理器有优化,导致无法看到五种governors,只有powersaveperformance两种,但实际效果并不好。这是由于使用intel_pstate驱动导致的,可以通过在引导脚本增加intel_pstate=disable关闭。

查看CPU主频与实际的运行主频:

1
grep -E '^model name|^cpu MHz' /proc/cpuinfo

模式调节

对于对时延和性能要求高的应用,需要在服务器BIOS中修改电源管理为 Performance,从而关闭 CPU 的动态调节功能,禁止 CPU 休眠,把CPU频率固定到最高。

我们既可以在BIOS进行设置,也可以在OS系统内部进行设置。

图形化切换器可用于转换CPU模式(省电模式和性能模式),命令行可用于查看CPU当前频率。

图形界面

indicator-cpufreq
  1. 安装:

    1
    sudo apt-get install indicator-cpufreq
  2. 重启电脑。

  3. 点击电脑右上角图标改变电源模式。

Slimbook Battery
  1. 安装:

    1
    2
    3
    sudo add-apt-repository ppa:slimbook/slimbook
    sudo apt update
    sudo apt install slimbookbattery
  2. 安装后即可在应用程序界面找到Slimbook Battery

  3. 启动之后,可以在「顶部面板」中找到它,并可以在此切换 Ubuntu 电源模式:

    • Energy Saving:节能模式,最大限度节省电池
    • Balanced:平衡模式,在性能和节能之间进行平衡
    • Maximum Performance: 最高性能模式,显着提高系统性能
  4. (可选)也可以在「advanced mode(高级模式)」配置菜单中对以上 3 种电源模式分别进行细化配置。如果配置搞得太乱,可以通过「restore default values」按钮来恢复 Slimbook Battery 的默认电源设置,还可以对「常规配置」进行更改,如:自动启动和默认电源模式等。

命令行

cpufrequtils
  1. 安装:

    1
    sudo apt-get install cpufrequtils
  2. 查看当前CPU的状态:

    1
    cpufreq-info
  3. 设置CPU模式:

    1
    2
    3
    sudo cpufreq-set -g {powersave, userspace, ondemand, conservative, performance}
    # {最省电(最低频率),用户控制,最高或最低,正常,最大性能}
    # 模式就是执行cpufreq-info后看到的所支持的模式
  4. (可选)设置CPU频率(对应userspace模式):

    1
    cpufreq-set -f {600~1500}  # 设置你的频率,使用 cpufreq-info 命令可以查看你的cpu支持哪些

    选择其它电源模式的时候在以下范围内自动控制:使用 cpufred-set -d 600M (最低) ,cpufreq-set -u 1.5G (最高)。

    对于非单核的CPU需要加上参数 -cc就是CPU的序号,使用cpufreq-info可以查询到。例如:

    1
    sudo cpufreq-set -c 11 -g performance
  5. 完成。

linux-tools-common
  1. 安装:

    1
    sudo apt install linux-tools-common
  2. 查看cpu状态:

    1
    cpupower -c all frequency-info
  3. 调整CPU到性能模式:

    1
    cpupower -c all frequency-set -g performance
  4. 完成。

使用上述方式,重启系统后可能又回到默认方式。修改默认模式:

  1. 安装sysfsutils

    1
    sudo apt-get install sysfsutils
  2. 查看当前的调节器:

    1
    cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  3. 编辑/etc/sysfs.conf,增加如下语句:

    1
    sudo gedit /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

    填写需要更改的状态。

参考脚本

1
2
3
4
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
[ -f $CPUFREQ ] || continue
echo -n performance > $CPUFREQ
done

这个配置重启后会失效。如果需要持久化,可以设置开机自动运行本脚本,或通过修改BIOS配置达到目的。

参考链接

升级GLIBC_

注意

没有金刚钻就不要升级glibc!因为glibc是系统最基础的C库,几乎所有的运行库都依赖它,特别是系统命令,一旦升级了glibc极有可能会导致很多系统命令都没法正常使用,这个系统基本上就报废了,这是很多Linux小白容易遇到的问题。

其他依赖的第三方库都可以升级,唯有glibc不建议升级。正确的做法是在同一版本或者更低版本glibc的系统上进行编译可执行文件。

下表是主流Linux发行版Ubuntu/CentOS/Debian系统默认的glic版本:

Ubuntu Debian CentOS Glibc
22.04 - - 2.34
20.04 11 - 2.31
- 10 8 2.28
18.04 - - 2.27
- 9 - 2.24
16.04 - - 2.23
14.04 8 - 2.19
13.04 - 7 2.17
12.04 - - 2.15
- 7 - 2.13
- - 6 2.12

查询版本

1
2
3
ldd --version
strings /lib/x86_64-linux-gnu/libm.so.6 |grep GLIBC_ # strings /lib64/libc.so.6 |grep GLIBC_
ll /lib/x86_64-linux-gnu/libm.so.6

命令行安装

1
2
3
sudo apt-get update  # 更新软件源
sudo apt-cache policy libc6 # 查询候选版本
sudo apt-get install libc6 # 安装候选版本

源码编译

  1. 安装依赖项:

    1
    sudo apt-get install gawk bison texinfo
  2. 下载压缩包:

    1
    wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.29.tar.gz
  3. 编译安装:

    1
    2
    3
    4
    5
    6
    tar -zxvf glibc-2.29.tar.gz
    cd glibc-2.29
    mkdir build && cd build
    ../configure --prefix=/usr/local/glibc/glibc-2.29 # configure最好不要加--with-headers参数,否则会遇到一些问题,因为这个参数指定make在该目录下查找库
    sudo make -j8 # 可以使用nproc来查看CPU核心数。编译的时间蛮长的,耐心等待。
    sudo make install

    报错:

    1. LD_LIBRARY_PATH shouldn’t contain the current directory when building glibc. Please change the environment variable。

      此时把LD_LIBRARY_PATH临时设为空可以解决该问题:

      1
      export LD_LIBRARY_PATH=
    2. 等。

  4. 添加环境变量:

    1
    2
    3
    4
    5
    6
    7
    8
    sudo gedit ~.bashrc

    # 添加
    export PATH=$PATH:/usr/local/glibc/glibc-2.29/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/glibc/glibc-2.29/lib
    # 保存后退出

    source ~.bashrc
  5. (谨慎,建议先跳过这一步)修改软链接。不可直接删除旧版软链接,如libm.so.6等,否则会导致系统崩溃。应备份后创建同名软连接指向新版:

    1
    2
    cp /lib/x86_64-linux-gnu/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6.bak
    ln -s /usr/local/glibc-2.29/lib/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6
  6. 查询当前版本:

    1
    ldd --version
  7. 完成。

参考链接

主流Linux发行版(Ubuntu/CentOS/Debian)系统默认glibc版本

ubuntu安装glibc

ubuntu下安装glibc 2.28(报错及解决办法)

升级glibc2.27

小贴士

终端按回车键执行不了命令

看看是不是把数字键锁定了?

代码编辑器的选择

2023年Stack Overflow的开发者调查

VSCode代码编辑器与JetBrains系列等大型IDE的对比:

  • 大型IDE集成度高,功能丰富齐全。但也因此臃肿,内存占用高(需要电脑配置好一点,否则会带不动,卡)。大多数人(不从事大型项目的开发)其实用不到这么多的功能。但是,大材小用,杀鸡用牛刀,千斤拨四两,不可以吗?
  • VSCode轻便,本身没什么功能,但社区活跃,插件丰富。往高了说,是可定制性高,拓展性强,更适合打造自己风格的写代码环境。往低了说,其实这些插件的功能,大型IDE多是本身自带就有的,插件的开发就是为了弥补VSCode没有IDE相关功能的不足。从这个方面讲,为什么不直接用IDE呢?
  • 另外,VSCode实际作为代码编辑器而不是IDE,配合相关插件可以直接适配多种语言,而一款IDE一般只专门针对一种语言。
  • 且VSCode现在支持了配置文件功能,可以方便配置切换使用不同语言时的系统环境,避免插件多了会发生功能冲突,简称打架。
  • VSCode的远程开发做得好像是最好的?
  • 更喜欢使用哪个,看自己偏好。

20240718更新:

JetBrains系列的IDE论各种功能的完善度、准确性、响应速度和丰富性,细节的打磨,更多的功能,更便捷的操作,都要比VSCode好。但是!令人无语的是,到目前为止,JetBrains里集成的GitHub Copilot远逊色于VSCode(看插件评论区骂声一片),不论是Copilot生成提示的智能性(我怀疑JetBrains里没有用很好的GPT),这也是最重要的。还是各种功能的打磨和完善,比如VSCode有更便捷的操作,而在JetBrains里,我遇到了Copilot插件高版本报错和无法自动联系上下文的问题(看插件评论区,这并不是个例)。可能是因为JetBrains更想推自己的大模型JetBrains AI Assistants?

纵然JetBrains系列的IDE各种功能更好,但是,最重要的还是写代码。我开始倾向于用VSCode写代码了,用JetBrains看代码(当VSCode受限时)。也许,如果JetBrains还不思进取而VSCode还在节节高升的话,我最终会完全转到VSCode下了。

20240829更新:

至少在C++编程方面,VSCode相较于CLion(JetBrains系列的IDE)除了轻量级和可定制性高外的唯一突出的优点就是GitHub Copilot更好用了。实测下来,在代码提示、重构代码、查找用法和静态分析等其它各种方面,CLion是更好用的。而这些方面,可以更好地辅助程序员阅读代码和排错(很重要)。

20240831更新:

实测发现,VSCode的“C/C++”插件包括静态代码分析(很重要)在内的各种功能不如“clangd”插件。因此,仅使用“C/C++”插件进行代码的构建,静态代码分析、代码补全等功能交给“clangd”插件。这样也就缩短了与CLion的差距。VSCode在Git集成的细节上不如CLion。

[clangd插件配置](# clangd插件)

窗口管理器

建议:大致规划一下工作区,比如工作区1写代码,工作区2看log,工作区3看网页和文档。然后绑定一下三个屏幕的快捷键或者利用 Ctrl+Alt+Up/Down切换工作区。在对应工作区上再使用Alt+Tab切换窗口。

这样不需要额外写代码或记录新的快捷键,跨发行版或重新安装无障碍。

参考链接

窗口管理器 vs 桌面环境

  • 窗口管理器(Windows Manager),负责绘制窗口的边框,处理窗口运行比如移动、最小化之类的行为。
  • 桌面环境(Desktop Environment),窗口管理器的超集,它使用窗口管理器及其其他软件提供一个完整的工作环境。

例如:gnome就是一个桌面环境,默认使用Metacity作为窗口管理器。

平铺式窗口管理器

平铺就是之所有的窗口都不会相互重叠,而是 自动的 被调整大小使得它们能够刚好占满整个屏幕。

相对的,我们平时使用的是浮动式窗口管理器,由于屏幕空间有限,当前激活的窗口会浮在最上面,而遮住下面的窗口。

常见的窗口管理相关的工具如下:(来自alim0x - Awesome-Linux-Software-zh_CN)

合成器

  • Compton - Compton 是一款独立的合成管理器,适合同没有原生提供合成功能的窗口管理器一同使用。
  • Gamescope - Gamescope 是一款微合成器,提供一个带有独立输入,分辨率和刷新率的沙盒 Xwayland 桌面。
  • Sway - Sway 是平铺 Wayland 合成器和 X11 下 i3 窗口管理器的新替代。
  • Xcompmgr - Xcompmgr 是一个简单的合成管理器,能够渲染下拉阴影,使用 transset 工具的话,还可以实现简单的窗口透明。

叠加式窗口管理器

  • 2bwm - 快速的浮动窗口管理,有两个特殊边界,基于 XCB 库,由 mcwm 衍生。
  • Blackbox - 快速,轻量化的 X 窗口系统窗口管理器,没有那些烦人的库依赖。
  • Fluxbox - 基于 Blackbox 0.61.1 代码的 X 窗口管理器。
  • Openbox - 高度可配置,带有可扩展标准支持的下一代窗口管理器。

平铺式窗口管理器

  • Bspwm - bspwm 是一个平铺式窗口管理器,将窗口以二叉树的叶结点的方式展现。
  • Herbstluftwm - 使用 Xlib 和 Glib 的手工平铺式窗口管理器。
  • i3 WM - 更好的平铺及动态窗口管理器。完全重写。目标平台是 GNU/Linux 和 BSD 操作系统。
  • i3-gaps - i3-gaps 是拥有更多功能的 i3。
  • Pop!_OS Shell - Pop Shell 是基于 GNOME shell 的窗口管理器,键盘驱动,自动平铺。
  • Qtile - qtile 是一款全功能,可 hack 的平铺窗口管理器,使用 Python 编写和配置。

动态窗口管理器

  • awesome - 高度可配置,下一代 X 框架窗口管理器。
  • dwm - X 动态窗口管理器。它以平铺,单片镜以及浮动布局的方式管理窗口。
  • spectrwm - 小型动态平铺 X11 窗口管理器。主要受 xmonad 和 dwm 启发。
  • xmonad - 动态平铺 X11 窗口管理器,用 Haskell 编写和配置。

CLion

下载安装

  1. 下载链接下载CLion。

    CLion20230302版本在我的Ubuntu18.04系统上界面排版不正常,多种尝试无果。CLion20230202版本正常。

  2. 安装:

    1
    2
    3
    4
    5
    # sudo mkdir /opt/clion
    cd yourfloder
    tar -xzvf CLion-2017.1.1.tar.gz
    cd clion-2017.1.1/bin
    ./clion.sh

测试

  1. 初始化完成后,进入欢迎界面。
  2. 选择 New Project。
  3. 设置项目路径和C++标准。
  4. 进入 CLion 主界面。这里将会默认新建 main.cpp 文档,并有示例。
  5. 运行程序。点击右上角的绿色按键,使可以运行程序,运行结果在最下面的窗口。

配置

通用

  1. 导入设置:

    注意同步设置时CLion的版本最好一致,否则可能有问题(尤其对于插件来说)。或者直接就不选择同步插件了。

    1. 文件-管理IDE设置-设置同步-开启设置同步-Get setting from account
    2. 或:文件-管理IDE设置-导入设置。
  2. 工具-创建桌面图标(条目)。

  3. 帮助-更改内存设置-最大堆大小:8192MiB

  4. 帮助-编辑自定义虚拟机选项:

    1
    2
    3
    # clion64.vmoptions
    -Xms4096m
    -Xmx8192m
  5. 解决CLion20230202版本输入法不跟随的情况:从JetBrainsRuntime下载jbr_jcef-17.0.9-linux-x64-b1087.9.tar.gz,解压并重命名为jbr,替换掉CLion安装目录的jbr

  6. 文件-设置-外观与行为-系统设置-HTTP代理-手动代理配置-HTTP:

    1
    2
    3
    # 以实际为准
    主机名(H): 127.0.0.1
    端口号(N): 10809
  7. 插件:

    有些插件在安装后可在文件-设置里做进一步配置。

    手动安装插件:

    1. https://plugins.jetbrains.com/的插件主页-Versions下载相关版本的`*.zip`压缩包。
    2. 打开CLion-设置-插件,点击中间右上角的竖向的3个点-从磁盘安装插件,即可覆盖之前安装的插件版本。
    • Atom Material Icons:图标美化
    • CamelCase:一键转化变量为驼峰命名或下划线命名
    • Chinese(Simplified)Language Pack/中文语言包
    • CodeGlance Pro:文件预览条
    • CSV Editor:CSV文件编辑器
    • GitHub Copilot:大模型辅助
    • GitToolBox:通过附加功能扩展Git,比如行后显示提交历史。设置-版本控制-GitToolBox
    • Git Commit Message Helper:标准化提交信息。设置-其它设置-GitCommitMessageHelper
    • Grep Console:美化配置终端
    • Hatchery:支持ROS
    • Key Promoter X:快捷键提示,界面右下角通知。用作提醒自己可以使用的快捷键。
    • Nyan Progress Bar:(彩虹猫)进度条美化
    • One Dark theme: One Dark Vivid Italic。主题美化。
    • Presentation Assistant:快捷键提示,界面中间底部绿色横幅。用作提醒自己刚使用的快捷键。2023.03版本后内置在设置-外观与行为-Presentation Assistant。
    • Rainbow Brackets:彩虹括号
    • Rainbow CSV:美化CSV文件
    • SequenceDiagram:时序图,支持JAVAkotlinScala文件
    • StickyScroll:粘滞滚动(简化版是向下拆分)
    • String Manipulation:字符串处理
    • Translation:IDE内翻译插件
  8. 设置界面字体大小:设置-外观与行为-外观-使用自定义字体-大小。

  9. 设置代码字体(大小):设置-编辑器-字体(大小);设置中文字体:-版式设置-回滚字体。

  10. 界面底部-右键-内存指示器。

  11. 双击选中一个变量,及高亮显示相同的变量。文件-设置-编辑器-配色方案-常规-代码-文本光标下的标识符/文本光标下的标识符(写入)-背景(FF0000)+错误条纹标记(FF0000)(侧边栏显示大概范围)。(插件BrowseWordAtCaret也可以?)

  12. 光标所在行的颜色。文件-设置-编辑器-配色方案-常规-编辑器-文本光标所在的行-背景。

  13. 显示空格。文件-设置-编辑器-常规-外观-显示空格。

  14. 制表符转空格。文件-设置-编辑器-代码样式-C/C++(CMake)-取消勾选使用制表符,缩进:4。各个值取4或4的倍数。

  15. 添加特殊注释。文件-设置-编辑器-TODO:可添加自定义Tag并配置筛选器。

    • 如TODO、FIXME、XXX、HACK/BODGE/KLUDGE、BUG/DEBUG、UNDONE和NOTE等。
    • 勾选:将以下行中的缩进文本视为同一TODO的一部分,后,在特殊注释的下面一行注释后加一个空格再注释,该行会被视为上一行特殊注释的一部分。
  16. 自动换行。

    • 对单个文件:View-Active Editor-Use Soft Wraps
    • 整个编辑器:Preferences-Editor-General-Use Soft Wraps in Editor-对这些文件进行软换行: *(default: *.md; *.txt; *.rst; *.adoc)
    • 设置-高级设置-编辑器-对代码行长度超过此值的文档强制进行自动换行
  17. 定义实时模板(自定义自动补全的语句)。例如,自动替换中文输入法下的、、转化为//

    1. 文件-设置-编辑器-实时模板。
    2. 选中中间C/C++选项下的任意条目。点击左上角的+号-实时模板。
    3. 设置下面的信息:
      • 缩写:、、
      • 描述:单行注释
      • 模板文本://+空格
      • 适用于:全选
      • 选项-展开方式-空格。
    4. 确定设置。
    5. 这样,在编辑器中输入、、再按下空格后,、、就会自动被替换为//了。

    输入“for”,按下默认快捷键Tab键选中。按下m,把i修改成m。再按一下Tab,光标位置变了。输入内容之后再按一下Tab之后就进入了for的{}内。

    类似的,可以为特殊注释配置实时模板,例如:// todo(空格触发)->// TODO-LLL25655:

  18. 自定义文件头。

    文件-设置-编辑器-文件和代码模板-C File Header,示例:

    Google推荐一行最多80个字符,所以模板中使用了80个 * 。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    /********************************************************************************
    * @author: Song Jiahao
    * @email: songjiahao@whu.edu.cn
    * @date: ${DATE} ${TIME}
    * @version: 1.0
    * @description:
    ********************************************************************************/


    默认:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #if ($HEADER_COMMENTS)
    //
    // Created by $USER_NAME on ${DATE}.
    #if ($ORGANIZATION_NAME && $ORGANIZATION_NAME != "")
    // Copyright (c) $YEAR ${ORGANIZATION_NAME}#if (!$ORGANIZATION_NAME.endsWith(".")).#end All rights reserved.
    #end
    //
    #end


    创建新的文件时,会自动生成自定义的文件头。

  19. 关联文件类型:设置-编辑器-文件类型-识别的文件类型:XML-文件名模式-添加-*.launch-确定;YAML-文件名模式-添加-*.rviz-确定。

  20. 取消Ctrl+/注释顶格:

    文件-设置-编辑器-代码样式-C/C++-常规:

    • 取消勾选“行注释在第一列”
    • 勾选“在行注释开始处添加空格”
    • 取消勾选“注释快在第一列”
    • 勾选“在块注释中缩进新行”
  21. 设置-高级设置-Clangd-使用基于Clangd的索引器。

    感觉还是不勾选好用。不勾选有“写入值”、“读取值”、“动态用法”等分类。勾选后只有“声明”和“未分类”。

  22. 参数提示:设置-编辑器-嵌入提示

  23. 设置-编辑器-代码样式-强制换行位置:80-勾选“键入时换行”

  24. 粘贴后自动格式化:编辑器-智能按键-粘贴时重新设置格式-重新设置块格式-勾选“再次重新设置格式以移除自定义换行符”

  25. 只格式化当前版本新修改的代码:工具栏-代码-重新设置文件格式(Ctrl+Alt+Shift+L)-Only VCS changed text(默认:整个文件)-Run,后再执行格式化快捷键Ctrl+Alt+L,就只会更新自己的代码。

  26. 等等。

其它

  1. Inotify Watches Limit (Linux)

    对于智能 IDE,了解其使用的文件中的任何外部更改至关重要 - 例如VCS、构建工具或代码生成器等所做的更改。因此,IDE平台会启动一个后台进程来监视此类更改。而监控值不够的话,响应速度会不够。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cd /etc/sysctl.d/
    sudo touch idea.conf
    sudo gedit idea.conf # 输入

    fs.inotify.max_user_watches = 1048576

    # 保存并退出

    sudo sysctl -p --system # 运行此命令以应用更改
    sysctl fs.inotify.max_user_watches # 查看当前设置
    # 重启IDE
  2. 格式化:项目目录中的.clang-format中的格式化配置优先于CLion中设置的。

使用

常用的命令及快捷键

卸载

官方卸载说明

注意:

  1. 卸载CLion会删除所有相关文件和配置,包括项目文件和设置。如果您需要保留这些文件,请备份它们。
  2. 如果电脑中给还有其他JetBrains系列的产品,删除需谨慎。
  1. 备份设置。

    1. 文件-管理IDE设置-设置同步-开启设置同步。
    2. 或:文件-管理IDE设置-导出设置。
  2. 卸载CLion。删除安装时创建的主程序目录(.tar.gz解压出的文件夹)。

  3. 备份配置文件:

    执行命令sudo find / -iname "*clion*"sudo find / -iname "*JetBrains*"来找到系统中CLion的文件,其中-iname参数表示按名称搜索,无论大小写。一般为:

    1. ~/.config/JetBrains/<product><version>
    2. ~/.local/share/JetBrains/<product><version>
    3. ~/.cache/JetBrains/<product><version>
    4. ~/.CLion2022.1
    5. ~/.java
  4. 删除配置文件。使用命令sudo rm -rf命令删除配置文件。删除后再次执行命令sudo find / -iname "*clion*"sudo find / -iname "*JetBrains*"来确认删除完全。

    1. ~/.gnome/apps/jetbrains-clion.desktop
    2. ~/.local/share/applications/jetbrains-clion.desktop
  5. 如要恢复配置文件。将备份的目录重新移动到原来的位置即可。

CLion调试ROS项目

官方教程

  1. 新建工作空间。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cd youfolder/
    mkdir -p catkin_ws/src

    cd catkin_ws
    catkin config --init --mkdirs --extend /opt/ros/melodic --merge-devel --cmake-args -DCMAKE_BUILD_TYPE=Release

    cd src
    catkin_init_workspace # 创建顶层CMakeLists.txt文件,CLion利用此文件打开项目

    cd ..
    catkin build # 编译生成完整工作区

    此时,./catkin_ws文件夹下有builddevellogssrc四个文件夹。

  2. 由于ROS的功能包需要先source,所以得把clion的启动方式改为bash启动,这样会先自动source功能包,否则会出现错误:

    1
    message(FATAL_ERROR “find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.”)

    修改方法:

    1
    sudo gedit /usr/share/applications/jetbrains-clion.desktop

    修改里面的Exec行,修改后的内容如下:

    1
    2
    # Exec="/opt/clion-2023.1.1/bin/clion.sh" %f
    Exec=bash -i -c "/opt/clion-2023.1.1/bin/clion.sh" %f
  3. 打开项目。打开CLion,文件-打开-选择./catkin_ws/src文件夹下的顶层CMakeLists.txt文件(不要选择子功能包里面的)-作为项目打开。

  4. 配置项目。文件-设置-构建、执行、部署-CMake:

    1
    2
    3
    4
    # CMake选项:
    -DCATKIN_DEVEL_PREFIX=../devel
    # 构建目录:
    ../build
  5. 选中./catkin_ws/src文件夹下的顶层CMakeLists.txt文件作为要加载的CMakeLists.txt文件,鼠标右键-加载CMake项目。CLion会自动开始编译项目,等待编译成功即可。之后如果想要重新编译,可以右键左侧的项目树,选择重新加载Cmake项目;或点击界面底部的Cmake,后点击弹出界面左上角的刷新符号。

    项目树会变成:

    src

    ├── googletest /usr/scr/googletest

    └── src /youfolder/catkin_ws/src

    如果之前已经自动创建了cmake-build-debug文件夹,直接删了就好。

    报错:

    1. CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkin_workspace.cmake:95 (message):

      This workspace contains non-catkin packages in it, and catkin cannot build

      a non-homogeneous workspace without isolation. Try the

      'catkin_make_isolated' command instead.

      Call Stack (most recent call first):

      CMakeLists.txt:68 (catkin_workspace)

      解决:使用‘catkin_make_isolated’代替‘catkin_make’进行编译或移除非catkin类型的package。

  6. 调试ROS节点程序。

    1. 编译成功后,Clion会自动加载该ROS项目的全部节点,显示在界面右上角。选择好要调试的节点,可以通过选择节点-编辑配置-程序实参来配置参数。

    2. 选择好节点后,点击节点旁边的小锤子符号来重新构建程序。

    3. 构建成功后,可以点击节点附近小虫子符号来启动调试,如打断点等。

      调试的时候可能需要终端启动roscore。

    4. 完成。

  7. 完成。

参考链接:

(入门篇)在Clion下进行ROS开发

Ubuntu下安装Clion

GDebi

更高级的包(*.deb*)管理工具——区别于Ubuntu内置默认的软件安装。

1
sudo gdebi <path_to_deb_file>

点击安装没有反应可能是包安装需要提前赋予管理员权限。

git

Git的配置与使用

Mission Center

类似于Windows的任务管理器。

Mission Center官网

安装

flathub官方安装教程

Mission Center安装参考链接

  1. 安装Flatpak

    1
    2
    3
    4
    5
    6
    # 要在 Ubuntu 18.10 (Cosmic Cuttlefish) 或更高版本上安装 Flatpak,只需运行:
    sudo apt install flatpak
    # 对于较旧的 Ubuntu 版本,推荐使用官方 Flatpak PPA 来安装 Flatpak。要安装它,请在终端中运行以下命令:
    sudo add-apt-repository ppa:flatpak/stable
    sudo apt update
    sudo apt install flatpak
  2. 安装软件 Flatpak 插件。软件应用程序的 Flatpak 插件使得无需命令行即可安装应用程序。要安装,请运行:

    1
    sudo apt install gnome-software-plugin-flatpak

    注意:自 Ubuntu 20.04 起,该软件应用程序以 Snap 形式分发,并且不支持 Flatpak 应用程序的图形安装。安装 Flatpak 插件还将安装 deb 版本的软件,并导致同时安装两个软件应用程序。

    安装完flatbub生成一个应用商店(图标由矩形、圆和三角形组成)。

  3. 添加 Flathub 存储库。Flathub 是获取 Flatpak 应用程序的最佳地点。要启用它,请运行:

    1
    flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
  4. 重启。要完成设置,请重新启动系统。现在您所要做的就是安装一些应用程序!

  5. 安装MissionCenter。

    • 命令行安装:

      1
      sudo flatpak install flathub io.missioncenter.MissionCenter
    • 商店安装:安装完flatbub生成一个应用商店(图标由矩形、圆和三角形组成),用法和snap商店一样,搜索mission center然后安装即可。

  6. 安装完成后会生成一个软件图标(名叫“任务中心”)。

运行

  • 命令行运行:

    1
    flatpak run io.missioncenter.MissionCenter
  • 图标运行:安装完成后会生成一个软件图标(名叫“任务中心”),应用列表点击图标即可。

Office

Microsoft Office

配置

修改快捷键

  1. File(文件)->options(选项)-> Customize ribbon(自定义功能区)->Customize (自定义快捷键)
  2. 选择 All commands(所有命令)->PasteTextOnly(粘贴纯文本), 在 Press new shortcut key (键入新快捷键)中输入自己喜欢的快捷键,例如示例中的 Ctrl+Shift+V, 点击 Assign(确定),即可使用快捷键 Ctrl+Shift+V 去粘贴为纯文本了。

Libre Office

配置

修改快捷键

  1. 点击:右上角“设置”符号-自定义-按键。
  2. 选中右上角的"LibreOffice"。
  3. 在“快捷键”栏找到“Shift+Ctrl+V”。
  4. 在“类别”栏找到“编辑”,在“功能”栏找到“粘贴无格式文本”。
  5. 单击窗口右上角“修改”,单击右下角“确定”。
  6. 同样的操作,将“Shift+Ctrl+Alt+V”的功能改为“选择性粘贴”。

Okular

Linux下使用的PDF阅读器。

Okular官网

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 首先,通过运行以下命令确保所有系统包都是最新的 apt 终端中的命令。
sudo apt update
sudo apt upgrade
# 默认情况下,Okular 在 Ubuntu 20.04 基础存储库中不可用。 现在运行以下命令以在您的 Ubuntu 系统上启用 Universe 存储库。
sudo add-apt-repository universe
# 运行以下命令更新包索引并安装 Okular PDF 查看器。
sudo apt update
sudo apt install okular

# 或,通过 Snap 安装 Okular
# 如果尚未安装 Snapd 软件包,则可以通过运行以下命令来安装它
sudo apt update
sudo apt install snapd
# 要安装 Okular,只需使用以下命令
sudo snap install okular

# 或,在软件中心搜索okular,点击install。

中文配置

参考链接

如果安装完成后中文显示有问题的话,可按如下试试,如果没有问题可跳过。

1
2
3
4
# 在终端输入: 
sudo apt-get install poppler-data
# 如果还不行,则再次输入:
sudo apt-get install poppler-utils

如果依然不行,则可能是因为某些 pdf 文件没有明确指明字体,系统就会默认用英文字体来显示,于是导致中文字体显示失败。解决办法是:

1
sudo gedit /etc/fonts/conf.d/49-sansserif.conf

1
2
3
<edit name="family" mode="append_last">
<string>sans-serif</string>
</edit>

改为

1
2
3
<edit name="family" mode="append_last">
<string>monospace</string>
</edit>

如果修改后的字体 monospace 依然不能显示,则可以改为 宋体 来显示。

运行

安装成功后,在桌面上运行以下路径打开路径: Activities -> Show Applications -> Okular 或使用如下所示的命令通过终端启动它

1
okular

报错:无法找到 Okular 组件︰ 共享库没有被找到。

原因:我找到了谜团的答案。它位于我的.bashrc文件中,其中包含一行:export LD_LIBRARY_PATH=/usr/local/Qt/5.10.1/gcc_64/lib:$LD_LIBRARY_PATH,它导致了其他应用程序(例如kile)出现类似的奇怪问题。这是在升级后出现的,因为该行以前是无害的。最后,我必须指出,我的安装中存在引用的库目录(即,这个问题并不是因为缺少目录而引起的)。

解决:

  1. 从应用程序菜单中运行okular。

  2. # 或
    sudo okular
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    3. 或,卸载重装Okular。

    4. 或,重启电脑之后就能用了?

    ## 使用

    [Okular常用快捷键](https://zeyulong.com/posts/a8aab215/#Okular)

    ## 卸载

    ```bash
    apt list --installed | grep -i okular # 模糊搜索
    sudo apt remove okular # 卸载软件
    sudo apt-get purge okular # 清除配置

Piper

我使用的鼠标是Logitech G502,但是Logitech的鼠标驱动Logitech G HUB只提供了Windows和Mac版。当然,我相信Piper提供的鼠标驱动不止适用于这款鼠标。

项目地址

安装

1
2
3
4
sudo add-apt-repository ppa:libratbag-piper/piper-libratbag-git
sudo apt update
# 对于 < Ubuntu 20.04 版本的系统,需要先添加上面的PPA
sudo apt install piper

使用

Win+A打开应用列表,找到Piper点击即可。

QQ Linux版

下载安装

官方下载地址和安装及卸载帮助

如何选择安装包?

QQ Linux版 目前支持x64(x86_64、amd64)、arm64(aarch64)、mips64(mips64el)三种架构,每种架构支持Debian系、红帽系、Arch Linux系、其它发行版中的一种或几种(未来可能继续扩充)。每一次发布均会提供架构和发行版的若干种组合支持的安装包,可按下面所述的规则进行选择。

每一个安装包会按照形如如下的格式命名:

1
2
linuxqq_1.0.1-b1-100_x86_64.rpm
[-产品名-][---版本---][-架构-][格式]
  1. 选择架构:

    根据你所使用的机器硬件架构选择相应的兼容架构类型(可通过uname -a查看)x64(x86_64、amd64)、arm64(aarch64)、mips64(mips64el)

  2. 根据你所使用的linux发行版选择格式:

    后缀名 安装包管理器 支持发行版
    .rpm rpm/yum 红帽系(如redhat、fedora、centos)
    .deb dpkg/apt debian系(如debian、ubuntu、银河麒麟)
    .pkg.tar.xz pacman arch系(如Arch Linux、manjaro)
    .sh bash 任意支持bash的发行版

如何安装?

当前版本的QQ Linux版依赖gtk2.0,安装QQ Linux版前请确保你的系统已安装gtk2.0。以下是一些使用命令行安装gtk2.0的例子:

1
2
sudo apt install libgtk2.0-0 # Ubuntu
sudo yum install gtk2.x86_64 # centos

请参考你所使用的系统安装包管理器的使用说明来安装你所选择的QQ Linux版安装程序,注意你需要root权限才能完成安装。在一些发行版中你可以通过双击文件管理器中的安装程序完成安装。以下是一些使用命令行来安装的例子:

1
2
3
4
5
sudo ./linuxqq_1.0.1-b1-100_x86_64.sh
sudo rpm -ivh linuxqq_1.0.1-b1-100_mips64el.rpm
sudo dpkg -i linuxqq_1.0.1-b1-100_armhf.deb
sudo apt install -y /path/to/linuxqq_1.0.1-b1-100_amd64.deb
sudo pacman -U linuxqq_1.0.1-ci-94_x86_64.pkg.tar.xz

如果版本更新后登录出现闪退情况,请删除 ~/.config/tencent-qq/#你的QQ号# 目录后重新登录。

默认安装位置:/opt/QQ

如何卸载?

请尽量使用你安装时使用的对应方式来卸载QQ Linux版(参考你所使用的系统安装包管理器说明)。同样需要root权限才能完成卸载。以下是一些例子:

1
2
sudo rpm -e linuxqq
sudo dpkg -r linuxqq

更新

下载最新版的安装包,如.deb,双击安装即可覆盖。

Texlive

安装配置

  1. 获取Texlive的iso镜像文件。可以访问以下网站下载texlive的iso文件:

  2. 安装Texlive。

    1. 为了使用图形化界面进行安装texlive,需要安装perl-tk:

      1
      2
      sudo apt-get install perl-tk
      sudo apt install tk
    2. 挂载iso镜像文件:

      1
      2
      3
      4
      5
      6
      # 进入到你下载好的iso文件所在目录下
      sudo mount -o loop texlive2023-20230313.iso /mnt # 将iso文件挂载(解压?)到mnt文件夹下,要挂载到哪个文件夹可以自己指定
      cd /mnt # 进入到到挂载后的文件夹下,才会找到install.tl文件
      sudo ./install-tl -gui # 执行install.tl这个文件,-gui使用图形界面开始安装
      # 如果是命令行安装根据提示,输入i进行安装
      # 安装完成,界面输出:Welcome to Tex Live!

      报错:mount: /mnt: WARNING: device write-protected, mounted read-only.

      解决:需要挂载的文件夹,以及挂载到的文件夹都要全部关闭。

  3. 环境配置。

    1
    2
    3
    4
    5
    6
    7
    8
    sudo gedit ~/.bashrc  # sudo gedit ~/.zshrc
    # 写入
    # 依据实际安装路径
    # 根据操作系统位数不同,64位的是x86_64-linux,如果是32位的则是 i386-linux
    export PATH=/usr/local/texlive/2023/bin/x86_64-linux:$PATH
    export MANPATH=/usr/local/texlive/2023/texmf-dist/doc/man:$MANPATH
    export INFOPATH=/usr/local/texlive/2023/texmf-dist/doc/info:$INFOPATH
    source ~/.bashrc # source ~/.zshrc
  4. 测试是否安装成功。

    1
    tex --version  # tex -v

    如果返回的结果是command not found而非版本和版权信息,或者显示了旧版本的信息,很有可能是因为你没有把正确的bin子目录添加到PATH中。

  5. 安装完成后卸载挂载的文件不让它占用空间 (mnt文件夹指的是挂载镜像文件的文件夹)。

    1
    sudo umount /mnt
  6. 更新字体信息。

    1
    2
    3
    sudo cp /usr/local/texlive/2023/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
    cd /etc/fonts/conf.d/
    sudo fc-cache -fsv # 执行失败就再执行此命令一次
  7. 更新配置源到清华大学。

    1
    sudo tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet

    此步如果出现 sudo;找不到命令 tlmgr,意味着执行时环境变量不对:

    1. 尝试:

      1
      sudo env PATH=$PATH tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet

      如果还不行,继续尝试:

    2. 请打开/etc/sudoers,将Defaults env_reset改为Defaults !env_reset

      1
      2
      sudo gedit /etc/sudoers
      # 将Defaults env_reset改为Defaults !env_reset
    3. sudo gedit ~/.bashrc  # sudo gedit ~/.zshrc
      # 写入
      alias sudo='sudo env PATH=$PATH'
      source ~/.bashrc  # source ~/.zshrc
      
      1
      2
      3

      4. ```bash
      sudo tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet
  8. 更新宏包。

    1
    2
    sudo tlmgr update --self --all
    # sudo env PATH=$PATH tlmgr update --self --all
  9. 为 Context 更新缓存。

    1
    context --generate
  10. 把windows下的字体拷贝过来,这个中文字体种类就比较多了。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 创建一个winfonts文件夹用于存放所有字体
    sudo mkdir /usr/share/fonts/winfonts

    # 将字体从Fonts文件中拷贝到winfonts中
    sudo cp ~/Fonts/* /usr/share/fonts/winfonts/

    # 进入到字体文件夹
    cd /usr/share/fonts/winfonts/

    # 修改字体访问权限
    sudo chmod 744 *

    # 回到主目录
    cd ~

    # 更新字体信息,使其生效
    sudo mkfontscale
    sudo mkfontdir
    sudo fc-cache -fv

    至此更多的字体都设置到Ubuntu系统中了,并且可以使用了。

    可通过 fc-list :lang=zh-cn 查看中文字体及字体在系统中的具体名字。

    如果有需要使用自定义的字体,方法也是重走第二中方案即可。例如:我想使用思源黑体,将下载好的字体文件放到winfonts文件夹下,修改权限,更新字体信息,就可以了。

测试

  1. 新建测试文件夹,在此文件夹下打开终端,输入:

    1
    touch main.tex

    新建一个.tex文件。

  2. 用编辑器打开这个文件,在里面写入代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    \documentclass{ctexart}
    \usepackage{amsmath}
    \title{Welcome to \LaTeX}
    \author{ljguo}
    \date{\today}
    \begin{document}
    \maketitle

    hello \LaTeX{}!
    你好 \LaTeX{}!

    这是勾股定理
    \[
    a^{2}+b^{2}=c^{2}
    \]
    \end{document}
  3. 保存,然后命令行执行:

    1
    xelatex main.tex
  4. 文件下新增main.pdf文件及main.auxmain.log

提示

  1. 在文档中使用新配置的中文字体。例如我想在文档中使用新配置的思源黑体:

    1
    2
    3
    4
    5
    6
    7
    8
    \documentclass{ctexart}

    \setCJKfamilyfont{syht}{Source Han Sans CN}
    \newcommand{\siyuanheiti}{\CJKfamily{syht}}

    \begin{document}
    {\siyuanheiti 这是用思源黑体写的内容}
    \end{document}

    值得注意的是对于字体设定的这个语法,

    1
    2
    \setCJKfamilyfont{syht}{Source Han Sans CN}
    \newcommand{\siyuanheiti}{\CJKfamily{syht}}

    可以在ctex-xecjk-winfonts.def文件里添加设定,在文档中直接使用即可,就不用每次都在文档中对字体进行设定了。

参考链接

Linux 下自定义安装 Texlive2023

在Linux环境下安装texlive

记录在Linux/Unbuntu下安装latex

TeXstudio

概述

编辑器 *.tex专用 跨平台 免费软件
Visual Studio Code ×
Sublime Text × ×
TeXstudio
WinEdt × ×
TeXpad × ×

表格摘自:说一说 TeXstudio

配置

  1. 选项-设置,勾选左下角的“显示高级选项”。

  2. 选项-设置-构建:若写中文论文,则需修改默认编译器为XelaTeX;若为英文,则用PdfLaTex。

  3. TeX系的文档不建议直接在文档中使用 Tab(\t)作为缩进,建议使用两个空格作为缩进。

    1. 选项-设置-编辑器:勾选“将缩进替换为空格”和“将文本中的制表符(Tab)替换为空格”。
    2. 选项-设置-高级编辑器-外观界面-Tab宽度。
  4. (可选)内嵌PDF和源码同步。

    1. 在生成的内嵌PDF窗口右上角点击“窗口查看器”图标。
    2. 在新生成的窗口点击:配置-“滚动跟随光标”和“光标跟随滚动”。
    3. 如果想合并窗口,则点击:配置-查看-窗口/内嵌。
  5. (可选)实时预览:选项-设置-内置PDF查看器-勾选“有变更时自动重新编译文档”。

使用

TeXstudio快捷键和使用技巧

更新(Windows)

TeXstudio更新之前需要先卸载旧版。在卸载之前,可以先复制一份用户配置以免配置文件丢失。对于Windows系统,配置文件一般在 C:\Users\用户名\AppData\Roaming\texstudio 路径下。*nix系统类似。

ToDesk

下载安装

下载链接

(覆盖旧版安装后,临时密码将会变更)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 安装命令:
sudo apt-get install ./todesk-v4.7.2.0-amd64.deb
# 启动命令:
todesk
# 删除服务设置配置:
sudo rm /opt/todesk/config/config.ini
# 卸载:
sudo apt-get remove --purge todesk

# 如不能正常使用,请执行以下命令初始化.
sudo systemctl stop todeskd.service
sudo mv /opt/todesk/config/config.ini /opt/todesk/config/config.ini.bak
sudo systemctl start todeskd.service

# 排查错误可执行以下命令看日志:
# 查看服务日志:(例如:xxxx_xx_xx.log为2022_08_03.log)
tail -f /var/log/todesk/service_xxxx_xx_xx.log
# 查看客户端日志:(例如:xxxx_xx_xx.log为2022_08_03.log)
tail -f ~/.local/share/todesk/Logs/client_xxxx_xx_xx.log

默认安装位置:/opt/todesk

VSCode

我可以在旧版 Linux 发行版上运行 VS Code Server 吗?

从 VS Code 版本 1.86.1(2024 年 1 月)开始,提高了远程服务器构建工具链的最低要求。

VS Code 分发的预构建服务器与基于 [glibc](# 升级GLIBC_) 2.28 或更高版本的 Linux 发行版兼容,例如 Debian 10、RHEL 8 或 Ubuntu 20.04。在 2025 年 2 月之前,VS Code 仍允许用户连接到 VS Code 不支持的操作系统(不提供 glibc >= 2.28 和 libstdc++ >= 3.4.25 的操作系统)。

这让您和您的公司有时间迁移到较新的 Linux 发行版。当您连接到 VS Code 不支持的操作系统版本时,VS Code 将显示对话框和横幅消息。

VSCode GitHub Copilot 版本兼容性

由于 Copilot Chat 因其深度 UI 集成而与 VS Code 同步发布,因此 Copilot Chat 的每个新版本仅与最新版本的 VS Code 兼容。

这意味着,如果您使用的是旧版本的 VS Code,您将无法使用最新的 Copilot Chat。

只有最新的 Copilot Chat 版本才会使用 Copilot 服务提供的最新模型,因为即使是较小的模型升级也需要在扩展中进行及时更改和修复。旧版本的 Copilot Chat 仍将使用最新版本的 Copilot 完成信息。

下载安装

下载链接下载*.deb文件后,双击安装。

我可以在旧版 Linux 发行版上运行 VS Code 吗?

从 VS Code 版本 1.86.1(2024 年 1 月)开始,VS Code 桌面仅与基于 glibc 2.28 或更高版本的 Linux 发行版兼容,例如 Debian 10、RHEL 8 或 Ubuntu 20.04。

如果您无法升级 Linux 发行版,建议的替代方案是使用我们的Web 客户端。如果您想使用桌面版本,则可以从此处下载 VS Code 版本 1.85。根据您的平台,请确保禁用更新以保留该版本。一个好的建议是使用便携式模式进行安装。

升级

如果你的VSCode已经通过*.deb安装过了,只需要输入两行代码即可更新已经安装的VSCode:

1
2
sudo apt update  # 更新源
sudo apt install code

配置

通用配置

打开settings.json

  • 使用 Ctrl+, 或者点击左下角齿轮图标并选择设置。
    • 在界面右上角点击“打开设置(json)”图标。
    • 在“文本编辑器”中找到 settings.json
  • 使用 Ctrl+Shift+P 或者点击左下角齿轮图标,选择命令面板。然后输入 settings.json 来搜索,点击Preferences: Open User Settings (JSON) 即可进入用户设置 settings.json 文件。

修改Preferences: Open User Settings (JSON): settings.json,将会覆盖掉Preferences: Open Default Settings (JSON): defaultSettings.jsondefaultSettings.json里配置了所有可自定义的默认选项。

  1. 字体大小:

    1. 设置(Ctrl+,)-窗口-Zoom Level
    2. 设置(Ctrl+,)-文本编辑器-字体-Font Size
  2. 行间距和字体粗细:

    1. 打开settings.json

    2. 写入:

      1
      2
      "editor.lineHeight": 30  // 控制行高
      "editor.fontWeight": 800 // 控制字体粗细
    3. 保存,完成。

  3. 命令行缓冲区(终端)中保留的最大行数:设置-功能-终端(Terminal)-Scrollback:10000

  4. 配色:

    1
    2
    3
    4
    "workbench.colorCustomizations": {
    "editor.selectionHighlightBackground": "#ec1f08", // 具有与所选项相关内容的区域的颜色。
    "editor.lineHighlightBackground": "#000000" // 光标所在行高亮内容的背景颜色。
    },
  5. 平滑光标:设置-文本编辑器-光标-Cursor Smooth Caret Animation

  6. 标签页换行:设置-工作台-编辑管理-Wrap Tabs

  7. 文件树缩进:设置-Workbench › Tree: Indent

  8. 淡化未使用的代码:设置:Editor: Show Unused

    C++语言环境无效。

  9. 修改主题配色:

    Enhanced colorization

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    "editor.tokenColorCustomizations": {
    "[One Dark Pro Darker]": {
    // [常用范围列表](https://binaryify.github.io/OneDark-Pro/#/?id=common-scope-list)
    "textMateRules": [
    {
    "scope": ["variable.other.local"], // (C++)局部变量,适用于设置使用C/C++插件的静态分析
    "settings": {
    "foreground": "#BBBBBB"
    }
    },
    {
    "scope": ["variable.parameter"], // 形参
    "settings": {
    "foreground": "#D19A66"
    }
    }
    ]
    }
    },
    "editor.semanticTokenColorCustomizations": {
    "enabled": true, // enable for all themes
    "rules": {
    "variable.functionScope": { // (C++)局部变量,适用于设置了使用clangd插件的静态分析
    "foreground": "#BBBBBB",
    // "fontStyle": "bold"
    },
    }
    },

    C/C++插件与clangd插件对变量类型的定义有所不同,issuse

    可以将光标放置在变量上,按Ctrl+Shift+P,输入“Developer: Inspect Editor Tokens and Scopes”查看“semantic token type”和“modifiers”。How To Customize Semantic Token Colorization With Visual Studio Code

    一些对应关系:

    • textMateRules/variable.other.global -> rules/variable.globalScope
    • textMateRules/variable.other.local -> rules/variable.functionScope
    • textMateRules/keyword.operator.new -> textMateRules/keyword.operator.{new,delete}.cpp
    • textMateRules/entity.name.function.operator.member -> textMateRules/{keyword.other.operator.overload,entity.name.operator}.cpp
    • textMateRules/entity.name.function.member.static -> rules/function.static
  10. 显示空格:

    • 设置:Editor: Render Whitespace: all
    • 查看-外观-显示空格
  11. 自动换行:

    1
    2
    "editor.wordWrap": "bounded",
    "editor.wordWrapColumn": 80,
  12. 双击变量后高亮其它位置的该变量:

    1
    2
    3
    "workbench.colorCustomizations": {
    "editor.selectionHighlightBackground": "#ec1f08",
    },

    好像同时会高亮其它包含该变量字符的变量,解决方法是Ctrl+F打开全词匹配(Alt+W)。

    单击变量也会标注出其它位置的该变量(默认的?),但是是灰色的框,不明显。

  13. 光标所在行的颜色:

    1
    2
    3
    "workbench.colorCustomizations": {
    "editor.lineHighlightBackground": "#000000",
    },
  14. 粘滞滚动,即显示上一级对应的代码:

    1
    "editor.stickyScroll.enabled": true,
  15. 在一定数量的等宽字符后显示垂直标尺:

    1
    2
    3
    "editor.rulers": [
    80
    ],

    进阶

    1
    2
    3
    4
    5
    "editor.rulers": [
    { "column": 80, "color": "#ff00ff" },
    { "column": 100, "color": "#00ff4c" },
    { "column": 120, "color": "#ff0000" },
    ],
  16. 打开终端的路径为当前文件所在路径,而不是工作区的根目录:

    1
    "terminal.integrated.cwd": "${fileDirname}",
  17. 等等。

光标动画

  1. 关闭VSCode。

  2. 打开终端,执行命令:

    1
    2
    sudo chown -R $(whoami) "$(which code)"
    sudo chown -R $(whoami) /usr/share/code

    详细说明见此处

  3. 下载光标动画配置文件yourFolder

    详细说明见此处。文件内配置可自定义。

  4. 打开VSCode。

  5. 搜索并安装插件“Custom CSS and JS Loader”。

  6. 编辑用户配置文件:

    1
    2
    3
    "vscode_custom_css.imports": [
    "file:///yourFolder/index.js"
    ],
  7. 打开快速命令窗口(Ctrl+Shift+P)并输入">Enable Custom CSS and JS"以应用设置。

    如果提示“文件已损毁”,点击“不再提醒”即可。

  8. 完成。

更多动画,可见插件VSCode Animations

卸载 Custom CSS and JS Loader: 先按Ctrl+Shift+P执行Disable Custom CSS and JS,按弹窗提示重启 VSCode,最后再卸载该插件。(在插件主页禁用插件再手动重启无效)

Extension causes high cpu load

Remaining icon in status bar after uninstall

插件配置

IntelliJ IDEA Keybindings

把VSCode的快捷键映射为JetBrains系列的IDE的快捷键配置。

Todo Tree

使用 Ctrl+Shift+P 或者点击左下角齿轮图标,选择命令面板。然后输入 settings.json 来搜索,点击Preferences: Open User Settings (JSON) 即可进入用户设置 settings.json 文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  // ## todo-tree
"todo-tree.regex.regex": "((%|#|//|<!--|^\\s*\\*)\\s*($TAGS)|^\\s*- \\[ \\])",
"todo-tree.regex.regexCaseSensitive": false,
"todo-tree.highlights.defaultHighlight": {
"type": "line",
"foreground": "#FF8C00",
"background": "#FF8C00",
"fontStyle": "italic",
"opacity": 0
},
"todo-tree.general.tags":[
"BUG",
"HACK",
"FIXME",
"TODO",
"XXX",
"[ ]",
"[x]",
"BUG-LLL25655",
"HACK-LLL25655",
"FIXME-LLL25655",
"TODO-LLL25655",
"XXX-LLL25655",
"NOTE-LLL25655",
"UNDONE-LLL25655",
"DEBUG-LLL25655"
],
"todo-tree.general.tagGroups": {
"LLL25655": [
"BUG-LLL25655",
"HACK-LLL25655",
"FIXME-LLL25655",
"TODO-LLL25655",
"XXX-LLL25655",
"NOTE-LLL25655",
"UNDONE-LLL25655",
"DEBUG-LLL25655"
]
},

TODO

  • Auto Hide: 当用户单击文本编辑器时,自动隐藏侧边栏和终端面板
  • Comment Translate: 翻译插件
  • CodeSnap / Polacode: 代码截图
  • Codeium: 适用于您最喜欢的语言的免费 AI 代码加速插件
  • colorize: 立即可视化 css/sass/less/postcss/stylus/XML... 文件中的 css 颜色
  • Color Highlight: 突出显示代码中的 CSS 颜色
  • Console Ninja: JavaScript console.log 输出和运行时错误就在代码旁边。
  • Document This: 自动在 TypeScript 和 JavaScript 文件中生成详细的 JSDoc 注释
  • ESLint / Prettier ESLint: 用于 JavaScript/TypeScript代码的语法检查和格式化
  • GitLens — Git supercharged: Git增强
  • koroFileHeader: 用于生成文件头部注释和函数注释的插件
  • Live Server: 启动具有静态和动态页面实时重新加载功能的开发本地服务器
  • Peacock: 巧妙地更改工作区的工作区颜色
  • Prettier: 代码格式化,支持多种语言,包括 JavaScript、TypeScript、HTML、CSS 等
  • Quokka: 一款用于快速 JavaScript / TypeScript 原型设计的开发人员生产力工具。当您键入时,运行时值会更新并显示在 IDE 中代码旁边。
  • RegEx Snippets: 无需记住任何内容即可轻松插入流行的正则表达式代码

C++

CMake

1
2
3
"cmake.configureOnEdit": false,
"cmake.configureOnOpen": false,
"cmake.buildDirectory": "${workspaceFolder}/../build-vscode",
  1. 取消自动CMake:

    1. 设置:Cmake: Configure On Open
    2. 设置:Cmake: Configure On Edit
  2. build目录:设置:Cmake: Build Directory

    1
    2
    ${workspaceFolder}/build  // 默认
    ${workspaceFolder}/../build-vscode
  3. 等等。

C/C++插件

实测发现,VSCode的“C/C++”插件包括静态代码分析(很重要)在内的各种功能不如“clangd”插件。因此,仅使用“C/C++”插件进行代码的构建,静态代码分析、代码补全等功能交给“clangd”插件。

glob 语法

1
2
"C_Cpp.codeAnalysis.clangTidy.enabled": true,
"C_Cpp.codeAnalysis.updateDelay": 1000,
  1. 设置:C_Cpp › Code Analysis: Run Automatically - ture

  2. 设置:C_Cpp › Code Analysis › Clang Tidy: Enabled - ture

  3. 设置:C_Cpp › Code Analysis: Update Delay - 1000

  4. 排除不必要的文件(夹)以加快分析速度:

    1. 设置:Explorer: Exclude Git Ignore

    2. 设置:Files: Exclude

    3. 设置:C_Cpp › Files: Exclude

    4. 设置:C_Cpp › Code Analysis: Exclude。示例:

      1
      2
      3
      4
      "C_Cpp.codeAnalysis.exclude": {
      "**3rdparty/": true,
      "**idea/": true
      },
  5. 等。

clangd插件

先安装“C/C++”插件再安装“clangd”插件安装完成后,会提示发生冲突提示,请选择“Disable IntelliSense”。

编辑用户设置 settings.json 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"cmake.copyCompileCommands": "",
"C_Cpp.errorSquiggles": "disabled",
"C_Cpp.intelliSenseEngineFallback": "disabled",
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.path": "/home/lll25655/.config/Code/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/bin/clangd",
"clangd.onConfigChanged": "restart",
// clangd的运行参数(在终端/命令行(`cd`到clangd可执行文件的路径后)输入 `./clangd --help` 可查看更多)
// clangd --version 可查看版本
// clangd --help-list-hidden 可查看隐藏参数
"clangd.arguments": [
// 启用 Clang-Tidy 以提供「静态检查」
"--clang-tidy",
// compelie_commands.json 文件的目录位置(相对于工作区),一般情况下,由于 CMake 生成的该文件默认在 build 文件夹中,故设置为 build)
"--compile-commands-dir=build",
// 建议风格:打包bundled(重载函数只会给出一个建议);反可以设置为detailed
"--completion-style=detailed",
// 启用配置文件(YAML格式)
"--enable-config",
// 默认格式化风格: 谷歌开源项目代码指南(可用的有 LLVM, Google, Chromium, Mozilla, Webkit, Microsoft, GNU 等)
// 当未找到 .clang-format 文件时默认应用 clang-format 样式
"--fallback-style=Google",
// 启用这项时,补全函数时,将会给参数提供占位符,键入后按 Tab 可以切换到下一占位符,乃至函数末
"--function-arg-placeholders=true",
// 输入建议中,已包含头文件的项与还未包含头文件的项会以圆点加以区分
"--header-insertion-decorators",
// 允许补充头文件
"--header-insertion=never",
// 让 Clangd 生成更详细的日志
"--log=verbose",
// pch优化的位置(memory 或 disk,选择memory会增加内存开销,但会提升性能)
"--pch-storage=memory",
// 输出的 JSON 文件更美观
"--pretty",
// 建议排序模型
"--ranking-model=heuristics",
// 同时开启的任务数量
"-j=16",
// 跨文件重命名变量
"--cross-file-rename",
// 在后台自动分析文件(基于 complie_commands,我们用CMake生成)
"--background-index"
],
// 找不到编译数据库(compile_flags.json 文件)时使用的编译器选项,
// 这样的缺陷是不能直接索引同一项目的不同文件,只能分析系统头文件、当前文件和被include的文件
"clangd.fallbackFlags": [
"-pedantic",
"-Wall",
"-Wextra",
"-Wcast-align",
"-Wdouble-promotion",
"-Wformat=2",
"-Wimplicit-fallthrough",
"-Wmisleading-indentation",
"-Wnon-virtual-dtor",
"-Wnull-dereference",
"-Wold-style-cast",
"-Woverloaded-virtual",
"-Wpedantic",
"-Wshadow",
"-Wunused",
"-pthread",
"-fuse-ld=lld",
"-fsanitize=address",
"-fsanitize=undefined",
"-stdlib=libc++"
],
// 自动检测 clangd 更新
"clangd.checkUpdates": true,
// clangd的snippets有很多的跳转点,不用这个就必须手动触发Intellisense了
"editor.suggest.snippetsPreventQuickSuggestions": false,

创建用户配置文件:

1
2
3
cd ~/.config
mkdir clangd
cd clangd

新建config.yaml文件并写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Diagnostics:
ClangTidy:
Add: ["*"]
Remove:
[
abseil*,
fuchsia*,
llvmlib*,
zircon*,
altera*,
google-readability-todo,
readability-braces-around-statements,
hicpp-braces-around-statements,
modernize-use-trailing-return-type,
]
Index:
Background: Build
CompileFlags:
Add: [--cuda-gpu-arch=sm_86] # 这里写你的 GPU 计算能力版本
Remove:
- -rdc=true
- -gencode

CompileFlags 下增加和移除的几个选项是为了消除 Clangd 对 CUDA C++ 代码的误报错,具体见:多版本 CUDA 安装切换和 PyTorch 深度学习环境配置

如果配置完“clangd”插件后,插件工作不正常,可以卸载重装插件,让插件重新加载一遍试试。

C/C++插件与Clangd插件对变量类型的定义有所不同,可能会导致主题配色有问题,解决见[通用配置](# 通用配置)第9条。

参考链接:

格式化风格

你可以使用 Format Modified Lines 命令 (editor.action.formatChanges) 来格式化你修改过的代码行。这个命令只会格式化你自己新增或修改的代码,而不会格式化之前版本管理的内容。

如果为了[使用“clangd”插件](# clangd插件)而在VSCode中配置了"C_Cpp.intelliSenseEngine": "disabled",,那么下述步骤中无需执行配置“C/C++”插件的步骤,原因在步骤最后。

  1. 生成 .clang-format 文件:

    • 从可执行文件生成:

      1. 在VSCode中安装插件“C/C++”。

      2. 生成 .clang-format 文件:

        1
        2
        3
        cd ~/.vscode/extensions/ms-vscode.cpptools-xxx(版本号)-linux-x64/LLVM/bin
        # Windows: cd C:\Users\<你的用户名>.vscode\extensions\ms-vscode.cpptools-xxx(版本号)-win32-x64\LLVM\bin\
        .\clang-format.exe -style="llvm" -dump-config > .clang-format

        得到一个 .clang-format 文件。

      3. 用文本编辑器编辑这个文件,就可以修改格式化格式了。ClangFormat配置说明

      4. (可选)将修改好后的.clang-format文件移动到项目根目录。

    • 从CLion生成:

      1. 打开CLion,在设置-编辑器-代码样式-C/C++中配置好格式化样式。

      2. 鼠标左键单击CLion底部的ClangFormat,选择“从xxx查看 ClangFormat 选项”。

        底部没有ClangFormat的话,可以尝试右键底部来添加。

        • 通过“从代码样式创建.clang-format”选项得到的.clang-format文件内容不全(是CLion一些默认的格式化设置没有录入到这里?)。
        • 通过点击设置-编辑器-代码样式-方案:项目-右侧的三个点-导出-.clang-format文件得到的文件内容不全。
      3. 在项目根目录(或者任一位置)新建文件.clang-format,保存上一步的文件内容。

  2. (可选).clang-format文件内容参考:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    # ClangFormatConfigureSource: 'LLVM'
    ---
    Language: Cpp
    # BasedOnStyle: LLVM
    AccessModifierOffset: -2
    AlignAfterOpenBracket: Align
    AlignArrayOfStructures: None
    AlignConsecutiveAssignments:
    Enabled: false
    AcrossEmptyLines: false
    AcrossComments: false
    AlignCompound: false
    PadOperators: true
    AlignConsecutiveBitFields:
    Enabled: false
    AcrossEmptyLines: false
    AcrossComments: false
    AlignCompound: false
    PadOperators: false
    AlignConsecutiveDeclarations:
    Enabled: false
    AcrossEmptyLines: false
    AcrossComments: false
    AlignCompound: false
    PadOperators: false
    AlignConsecutiveMacros:
    Enabled: false
    AcrossEmptyLines: false
    AcrossComments: false
    AlignCompound: false
    PadOperators: false
    AlignEscapedNewlines: Right
    AlignOperands: Align
    AlignTrailingComments:
    Kind: Always
    OverEmptyLines: 0
    AllowAllArgumentsOnNextLine: true
    AllowAllParametersOfDeclarationOnNextLine: true
    AllowShortBlocksOnASingleLine: Never
    AllowShortCaseLabelsOnASingleLine: false
    AllowShortEnumsOnASingleLine: true
    AllowShortFunctionsOnASingleLine: All
    AllowShortIfStatementsOnASingleLine: Never
    AllowShortLambdasOnASingleLine: All
    AllowShortLoopsOnASingleLine: false
    AlwaysBreakAfterDefinitionReturnType: None
    AlwaysBreakAfterReturnType: None
    AlwaysBreakBeforeMultilineStrings: false
    AlwaysBreakTemplateDeclarations: MultiLine
    AttributeMacros:
    - __capability
    BinPackArguments: true
    BinPackParameters: true
    BitFieldColonSpacing: Both
    BraceWrapping:
    AfterCaseLabel: false
    AfterClass: false
    AfterControlStatement: Never
    AfterEnum: false
    AfterExternBlock: false
    AfterFunction: false
    AfterNamespace: false
    AfterObjCDeclaration: false
    AfterStruct: false
    AfterUnion: false
    BeforeCatch: false
    BeforeElse: false
    BeforeLambdaBody: false
    BeforeWhile: false
    IndentBraces: false
    SplitEmptyFunction: true
    SplitEmptyRecord: true
    SplitEmptyNamespace: true
    BreakAfterAttributes: Never
    BreakAfterJavaFieldAnnotations: false
    BreakArrays: true
    BreakBeforeBinaryOperators: None
    BreakBeforeConceptDeclarations: Always
    BreakBeforeBraces: Attach
    BreakBeforeInlineASMColon: OnlyMultiline
    BreakBeforeTernaryOperators: true
    BreakConstructorInitializers: BeforeColon
    BreakInheritanceList: BeforeColon
    BreakStringLiterals: true
    ColumnLimit: 80
    CommentPragmas: '^ IWYU pragma:'
    CompactNamespaces: false
    ConstructorInitializerIndentWidth: 4
    ContinuationIndentWidth: 4
    Cpp11BracedListStyle: true
    DerivePointerAlignment: false
    DisableFormat: false
    EmptyLineAfterAccessModifier: Never
    EmptyLineBeforeAccessModifier: LogicalBlock
    ExperimentalAutoDetectBinPacking: false
    FixNamespaceComments: true
    ForEachMacros:
    - foreach
    - Q_FOREACH
    - BOOST_FOREACH
    IfMacros:
    - KJ_IF_MAYBE
    IncludeBlocks: Preserve
    IncludeCategories:
    - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
    Priority: 2
    SortPriority: 0
    CaseSensitive: false
    - Regex: '^(<|"(gtest|gmock|isl|json)/)'
    Priority: 3
    SortPriority: 0
    CaseSensitive: false
    - Regex: '.*'
    Priority: 1
    SortPriority: 0
    CaseSensitive: false
    IncludeIsMainRegex: '(Test)?$'
    IncludeIsMainSourceRegex: ''
    IndentAccessModifiers: false
    IndentCaseBlocks: false
    IndentCaseLabels: false
    IndentExternBlock: AfterExternBlock
    IndentGotoLabels: true
    IndentPPDirectives: None
    IndentRequiresClause: true
    IndentWidth: 4
    IndentWrappedFunctionNames: false
    InsertBraces: false
    InsertNewlineAtEOF: false
    InsertTrailingCommas: None
    IntegerLiteralSeparator:
    Binary: 0
    BinaryMinDigits: 0
    Decimal: 0
    DecimalMinDigits: 0
    Hex: 0
    HexMinDigits: 0
    JavaScriptQuotes: Leave
    JavaScriptWrapImports: true
    KeepEmptyLinesAtTheStartOfBlocks: true
    LambdaBodyIndentation: Signature
    LineEnding: DeriveLF
    MacroBlockBegin: ''
    MacroBlockEnd: ''
    MaxEmptyLinesToKeep: 1
    NamespaceIndentation: None
    ObjCBinPackProtocolList: Auto
    ObjCBlockIndentWidth: 2
    ObjCBreakBeforeNestedBlockParam: true
    ObjCSpaceAfterProperty: false
    ObjCSpaceBeforeProtocolList: true
    PackConstructorInitializers: BinPack
    PenaltyBreakAssignment: 2
    PenaltyBreakBeforeFirstCallParameter: 19
    PenaltyBreakComment: 300
    PenaltyBreakFirstLessLess: 120
    PenaltyBreakOpenParenthesis: 0
    PenaltyBreakString: 1000
    PenaltyBreakTemplateDeclaration: 10
    PenaltyExcessCharacter: 1000000
    PenaltyIndentedWhitespace: 0
    PenaltyReturnTypeOnItsOwnLine: 60
    PointerAlignment: Right
    PPIndentWidth: -1
    QualifierAlignment: Leave
    ReferenceAlignment: Pointer
    ReflowComments: true
    RemoveBracesLLVM: false
    RemoveSemicolon: false
    RequiresClausePosition: OwnLine
    RequiresExpressionIndentation: OuterScope
    SeparateDefinitionBlocks: Leave
    ShortNamespaceLines: 1
    SortIncludes: CaseSensitive
    SortJavaStaticImport: Before
    SortUsingDeclarations: LexicographicNumeric
    SpaceAfterCStyleCast: false
    SpaceAfterLogicalNot: false
    SpaceAfterTemplateKeyword: true
    SpaceAroundPointerQualifiers: Default
    SpaceBeforeAssignmentOperators: true
    SpaceBeforeCaseColon: false
    SpaceBeforeCpp11BracedList: false
    SpaceBeforeCtorInitializerColon: true
    SpaceBeforeInheritanceColon: true
    SpaceBeforeJsonColon: false
    SpaceBeforeParens: ControlStatements
    SpaceBeforeParensOptions:
    AfterControlStatements: true
    AfterForeachMacros: true
    AfterFunctionDefinitionName: false
    AfterFunctionDeclarationName: false
    AfterIfMacros: true
    AfterOverloadedOperator: false
    AfterRequiresInClause: false
    AfterRequiresInExpression: false
    BeforeNonEmptyParentheses: false
    SpaceBeforeRangeBasedForLoopColon: true
    SpaceBeforeSquareBrackets: false
    SpaceInEmptyBlock: false
    SpaceInEmptyParentheses: false
    SpacesBeforeTrailingComments: 1
    SpacesInAngles: Never
    SpacesInConditionalStatement: false
    SpacesInContainerLiterals: true
    SpacesInCStyleCastParentheses: false
    SpacesInLineCommentPrefix:
    Minimum: 1
    Maximum: -1
    SpacesInParentheses: false
    SpacesInSquareBrackets: false
    Standard: Latest
    StatementAttributeLikeMacros:
    - Q_EMIT
    StatementMacros:
    - Q_UNUSED
    - QT_REQUIRE_VERSION
    TabWidth: 8
    UseTab: Never
    VerilogBreakBetweenInstancePorts: true
    WhitespaceSensitiveMacros:
    - BOOST_PP_STRINGIZE
    - CF_SWIFT_NAME
    - NS_SWIFT_NAME
    - PP_STRINGIZE
    - STRINGIZE
    ...
  3. VSCode: 打开设置(Ctrl + ,)-用户-文本编辑器-Default Formatter: C/C++ ms-vscode.cpptools

  4. (可选)设置-文本编辑器-格式化

  5. 设置-扩展-C/C++-格式设置-“C_Cpp: Formatting”: clangFormat

  6. 设置-扩展-C/C++-格式设置-“C_Cpp: Clang_format_style”: file

    或使用 file:<路径>/.clang-format 引用特定路径。

    当找不到用户自定义的.clang-format配置文件时,还有个备选方案:

    设置-扩展-C/C++-格式设置-“C_Cpp: Clang_format_fallback Style”: Visual Studio

  7. (可选):

    1
    2
    3
    4
    "editor.formatOnPaste": true,
    "editor.formatOnType": true,
    "editor.formatOnSaveMode": "modificationsIfAvailable",
    "bookmarks.useWorkaroundForFormatters": true,
  8. 完成。

当为了[使用“clangd”插件](# clangd插件)而在VSCode中配置了"C_Cpp.intelliSenseEngine": "disabled",后,“C/C++”插件的格式化配置会失效,系统提示重新制定格式化程序:

1
2
3
"[cpp]": {
"editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
},

这时,并不能指定.clang-format的路径,只能把该文件放在项目目录中。

在clangd中,.clang-format文件的路径是由clangd自动确定的,你不能直接在clangd的参数中指定.clang-format文件的路径。

当你在VS Code中格式化一个文件时,clangd会在文件的目录以及所有父目录中查找.clang-format文件,直到找到一个.clang-format文件,或者到达文件系统的根目录。如果clangd找到了一个.clang-format文件,它就会使用这个文件中的样式规则来格式化你的代码。如果clangd没有找到.clang-format文件,它就会使用--fallback-style参数指定的样式规则。

因此,如果你想让clangd使用特定的.clang-format文件,你需要将这个文件放在你的代码文件的目录或任何父目录中。如果你想让所有的代码文件都使用同一个.clang-format文件,你可以将这个文件放在你的工作区的根目录中。

在VS Code中,你可以通过查看设置来了解当前文件的格式化程序。但是,VS Code并没有直接的命令或设置可以查看当前文件被哪个格式化程序处理。

你可以在设置中搜索"[文件类型]": {"editor.defaultFormatter": ...}来查看特定文件类型的默认格式化程序。例如,如果你想查看JavaScript文件的默认格式化程序,你可以搜索"[javascript]": {"editor.defaultFormatter": ...}

如果你想查看所有文件类型的默认格式化程序,你可以搜索"editor.defaultFormatter"

这些设置可能会被工作区设置或文件夹设置覆盖,所以你需要检查这些地方的设置。

另外,你可以通过执行Format Document With... (editor.action.formatDocument.multiple)命令来查看可用的格式化程序列表,这个列表中应该包含了当前文件的格式化程序。

参考链接:

VSCode中针对C语言的代码格式化配置

VSCode C/C++ 格式化配置【最完整准确版本】

Python

格式化风格

安装插件: Black Formatter

1
2
3
4
5
6
7
8
9
10
11
12
// ## python
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
"python.analysis.completeFunctionParens": true,

// # 插件配置
// ## black-formatter
"black-formatter.args": [
"--line-length",
"80"
],

ROS

  • 插件:

    • ROS
    • catkin-tools
  • 设置Cmake路径:

    1. 打开设置(Ctrl+,)。
    2. 搜索@ext:ms-vscode.cmake-tools
    3. 找到Cmake: Build Directory
    4. 输入${workspaceFolder}/../build-vscode

使用

常用命令及快捷键

微信

  1. 安装wine(需自行搜索)。

  2. 下载 微信 for Windows*.exe文件。

  3. 使用wine安装微信:

    1
    2
    cd yourfolder/
    wine *.exe
  4. 使用wine打开微信:

    1
    2
    3
    # wine创建的C盘默认所在的路径是:~/.wine/drive_c/
    # 微信默认的安装路径是:C:\Program Files\Tencent\WeChat
    wine ~/.wine/drive_c/Program Files/Tencent/WeChat/WeChat.exe
  5. 输入不显示解决方法

Zotero

下载安装

Zotero官网

插件

插件推荐

当前自己使用Zotero主要是为了在Linux系统下阅读英文文献。Linux、Ubuntu下英文文献翻译软件、工具推荐

README.txt里附有安装说明。

安装插件

  1. 下载最新版本(.xpi 文件)。注意,如果您使用 Firefox 作为浏览器,请右键单击.xpi并选择“另存为”。
  2. 在Zotero中,单击顶部菜单栏,然后单击Tools-Addons
  3. 转到“扩展”页面,然后单击右上角的齿轮图标。
  4. 选择Install Add-on from file
  5. 浏览到.xpi文件的下载位置并选择它。
  6. 通过单击扩展列表restart now,重新启动Zotero。

插件及其更新的.xpi源文件会备份在~/.zotero/zotero/xxx.default/extensions目录下。

配置插件

编辑-首选项

使用

Linux系统下常用的命令及快捷键

更新

更新Zotero

参考链接

帮助-检查更新-自动更新。

报错:

1
A recommended update is available,but you do not have permission to install it.To update automatically,modify the Zotero program directory to be writeable by your user account.

解决:

1
2
3
4
5
# Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。
# -R : 处理指定目录以及其子目录下的所有文件
# 你自己系统的Zotero安装路径。
sudo chown -R $USER:$USER /usr/bin/zotero
sudo chown -R $USER:$USER /opt/zotero

如果不想在软件启动时看见这个报错,可以删除Zotero安装文件夹下的updates文件夹。

报错:

1
The update could not be installed. Please make sure there are no other copies of Zotero running on your computer, and then restart Zotero to try again.

解决:

您似乎正在以root用户身份运行Zotero。这是不安全的,可能阻止Zotero从用户帐户启动时无法正常运行。如果您想安装自动更新,请修改Zotero程序用户帐户可写的目录。

当我使用ls -l命令查看Zotero安装目录下各文件(夹)的读写权限时,发现除updates文件夹的所有者是当前账户外,其他的文件(夹)都是root账户。因此,我使用下面的命令将Zotero安装目录下各文件(夹)的读写权限的所有者统一设置为当前账户后,报错就解决了(把updates文件夹的所有者升级为root账户也行?没试过)。

1
2
3
4
5
# Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。
# -R : 处理指定目录以及其子目录下的所有文件
# 你自己系统的Zotero安装路径。
sudo chown -R $USER:$USER /usr/bin/zotero
sudo chown -R $USER:$USER /opt/zotero

更新插件

工具-附加组件-右上角设置符号-Check for Updates

TODO

CLI(命令行界面)、GUI(图形用户界面)、TUI(基于文本的用户界面)、Terminal(终端)、Console(控制台)。

  • bat工具是著名的 cat 程序的克隆,支持语法突出显示和 git 集成。
  • bpy top:CLI。资源监视器,显示处理器、内存、磁盘、网络和进程的使用情况和统计信息。
  • fzf: 命令行模糊查找器。适用于任何类型的列表;文件、命令历史记录、进程、主机名、书签、git 提交等。它实现了“模糊”匹配算法,因此您可以快速输入省略字符的模式,但仍然可以获得您想要的结果。
  • lazygit:TUI。Lazygit 为 git 操作提供了可视化界面,使得仓库管理更加直观。
  • pet:CLI。一个命令行片段管理器。它旨在帮助您记住并快速访问那些不经常使用但对工作流程至关重要的复杂命令。
  • terminalizer:记录终端会话并将其导出为动画 GIF
  • tmux:CLI。终端多路复用器,用于有效管理多个终端会话。
  • Yazi:用 Rust 编写的基于异步 I/O 的超快终端文件管理器

参考链接


系统配置与软件安装[持续更新……]
http://zeyulong.com/posts/ad29da53/
作者
龙泽雨
发布于
2024年2月1日
许可协议