Skip to content

📒 软件使用经验和技巧

好用的软件

类别 macOS Linux Windows Android
压缩工具 Keka Bandizip
播放器 IINA VLC PotPlayer VLC
窗口管理 Rectangle
终端 Termius Termius Termius Termius
远程摄像头 Iriun Webcam
投屏 scrcpy
网络工具 CellularZ
网络万用表
文件管理 Midnight Commander
久坐提醒 Time Out Safe Eyes Big Stretch Reminder
按键展示 KeyCastr YetAnotherKeyDisplayer/Kling
连点器 macos-auto-clicker OP Auto Clicker

Git

Quote

CRLF 问题

创建仓库时,就应当添加 .gitattributes,强制所有人使用统一的换行符提交:

# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary

更换 Git 端口

某些情况下受网络限制无法访问服务器 22 端口,可以将 git:// 链接改为 ssh:// 链接,走其他端口,如下:

git remote set-url origin ssh://git@ssh.github.com:443/yourname/reponame.git

常用 commit 类型

类型 描述
feat 功能 引入了新功能
fix 修复 修复了一个错误
chore 琐事 不涉及修复或功能的更改,不修改 src 或测试文件(例如更新依赖项)
refactor 重构 重构代码,不修复错误也不添加功能
docs 文档 更新文档,例如 README 或其他 markdown 文件
style 风格 不影响代码含义的更改,可能与代码格式相关,例如空格、缺少分号等
test 测试 包括新的或更正以前的测试
perf 性能 性能改进
ci 持续集成 持续集成相关
build 生成 影响构建系统或外部依赖项的更改
revert 恢复 恢复以前的提交

编辑器

VSCode

  • 烦人的自动补全

    在写程序代码时,自动补全能极大地提高效率,但在撰写文档过程中常常相反。比如在 Markdown 中开启代码建议,则常常会跳出前面出现过的句子等,按下 Enter 键就直接键入了,非常智障。但关闭代码建议后,自定义的用户代码片段也不会自动跳出。最好的解决方法是:指定 Tab 键为接受代码建议的按键。更多代码建议的信息,请参考 How to disable IntelliSense in VS Code for Markdown? - Stack Overflow

  • 标题栏

    在 Linux 系统上安装 VSCode 可能会出现很厚的标题栏。在 settings.json 中设置

    "window.titleBarStyle": "custom"
    

    即可隐藏系统自带标题栏。你还可以进一步隐藏菜单栏,设置 "window.menuBarVisibility" 即可,参考 vs code 界面去除菜单栏_window.menubarvisibility": "default",-CSDN 博客

  • 用户代码片段

    可以在 VSCode 中配置用户代码片段,为常用的代码片段提供便捷的智能输入。Snippet Generator 是一个用户代码片段生成器。

  • tasks.json:用于项目生成任务,参考官方文档 Tasks

    Tasks 的目的是将各种自动化项目构建系统(如 Make 等),通过命令行聚合到 VSCode 中。

    在 VSCode 中配置的一般顺序如下:首先在 tasks.json 中编写自己的 task,然后在命令面板中选择 Configure Default Build Task 设置某个 task 为默认选项,此后便可以使用 Ctrl+Shift+B 执行任务。

    tasks 示例

    {
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "C:\\mingw64\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"
        }
    ]
    }
    

    这是 VSCode 默认生成于 Windows 中的执行文件。还是比较容易读懂它的作用是什么的。为了可移植性,我将 command 更改为 gcc,经过测试在 Windows 和 Linux 上均可用。其他东西基本不需要动。

  • launch.json:用于调试(执行编译好的文件),参考官方文档 Debug

    VSCode 利用语言对应的扩展来支持调试。不同的调试器支持的配置也不同,以下以 gdb 调试器为例。

    launch 实例

    {
        "version": "0.2.0",
        "configurations": [
            {//Windows 和 Linux 通用,gdb 调试
                "name": "gdb",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}\\${fileBasenameNoExtension}",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${fileDirname}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "miDebuggerPath": "gdb",
                "setupCommands": [
                    {
                        "description": "将反汇编风格设置为 Intel",
                        "text": "-gdb-set disassembly-flavor intel",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "build",
            }
        ]
    }
    

终端

Tmux

  • 会话、窗口和窗格(sessions, windows and panes)
  • 使用 /tmp 中的 socket 文件与服务端通信。服务端在后台运行,管理运行在 tmux 中的所有程序并跟踪它们的输出。

  • 创建会话:tmux new

    • -s 指定会话名称
    • -n 指定窗口名称
    • -d 创建会话而不附着
    • -A 如果会话存在则附着
    • command 最后可以附带需要在窗口中运行的命令
    • Example: tmux new -n mytopwindow top
  • 附着:tmux attach
    • -t 指定会话的名称
    • -d 使其他附着到该会话的客户端脱离
  • 列出会话:tmux ls

C-b : 打开内置命令行。

  • :kill-server 关闭服务端,结束所有会话。
  • :neww 新的窗口
    • -d 创建但不设为当前窗口
    • -n 设置名字
    • -t 设定序号
    • command 最后跟执行的命令
  • :split-window 分割窗格
    • -h, -v 水平、垂直分割
    • -d 不改变活动窗格
    • -f 让新窗格占据整个横、纵向位置
    • -b 将新窗格置于左、上方

使用 C-b ? 查看按键列表。