在系统中所有的基础配置都完成后,可能会需要一些进阶的配置来提高Linux系统使用的效率。
如果内容恰好可以帮助到你,我非常开心!
安装Rust和Cargo
国内 macOS/Linux 安装 rust | sammyne
国内安装比较困难,需要配置镜像源,还可能有一些别的网络问题,不过如果配置好Clash后就很简单了,直接用官方的一行命令解决:
1 | curl https://sh.rustup.rs -sSf | sh |
安装并配置joshuto(已使用Yazi代替)
这是使用Rust重写的ranger,性能比ranger高很多
Linux上的超快速文件管理工具,可以代替ranger
文件在指尖飞舞 - 终端文件管理器Joshuto_哔哩哔哩_bilibili
kamiyaa/joshuto: ranger-like terminal file manager written in Rust
将安装文件夹下的配置文件夹config
复制到~
目录的.config
目录下,改名为joshuto
,joshuto就会自动使用此配置文件。
输入?
即可查看快捷键,大多数和Vim的快捷键比较像。
Yazi
Yazi(意思是“鸭子”)是一个用 Rust 编写的终端文件管理器,基于非阻塞异步 I/O。它旨在提供高效、用户友好且可定制的文件管理体验。
对比joshuto速度更快,功能更丰富,且目前还在积极开发中,而joshuto由于其作者找到了新工作,目前已进入维护模式。
我的Yazi配置参考:HC3560/HC-Config
使用配置文件需先参考官方文档(Yazi)安装Yazi需要的一些扩展软件:
1 | sudo apt install ffmpeg 7zip jq poppler-utils fd-find ripgrep fzf zoxide imagemagick eza |
Yazi本体可以通过Cargo安装:
1 | cargo install --force yazi-build |
参考:
【命令行必备】Yazi:最强文件管理器_哔哩哔哩_bilibili
插件:
compress.yazi:可将选定的文件或文件夹压缩到存档中
git.yazi:在文件列表中以linemode显示Git文件更改的状态
starship.yazi:在Yazi中显示starship命令行信息(starship/starship: ☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!)
yaziline.yazi:Yazi的简单类似lualine的状态行,在状态行中显示更多信息
full-border.yazi:给Yazi加上完整的边框,让它看起来更华丽
max-preview.yazi:最大化或恢复预览窗格
eza-preview.yazi:Yazi插件使用eza预览目录,可以在列表和树模式之间切换
chmod.yazi:对所选文件执行chmod
以更改其模式。该插件仅在 Unix 平台上可用,因为它依赖于chmod
jump-to-char.yazi:类似Vim的f<char>
,跳转到下一个名称以<char>
开头的文件
smart-filter.yazi:一个让过滤器变得更智能的Yazi插件:连续过滤,自动进入唯一目录,提交时打开文件
yazi.nvim:此插件允许您在Neovim的浮动窗口中打开yazi,配合Neovim使用,使用lazy.nvim安装,具体参照我的nvim配置HC3560/HC-Config
confirm-quit.yazi:如果有多个标签页打开,在退出前进行一次确认。注意:使用此插件时,您可能会在 Yazi 退出前注意到一个短暂的弹出窗口闪烁。这是一个“运行任务”确认弹出窗口。有关此行为的更多详细信息,请参阅: #1059
close-and-restore-tab.yazi:一个添加关闭和恢复标签功能的Yazi插件
sudo.yazi:在yazi中调用sudo命令
yamb.yazi:一款用于书签管理的Yazi插件。持久书签,关闭yazi后,书签不会丢失;快速通过快捷键跳转、删除和重命名书签;支持通过fzf进行模糊搜索;可使用Lua语言配置书签
trashy
这是使用Rust重写的trash-cli
Linux增加回收站功能,安全删除文件必备
可以配合Yazi使用,Yazi中删除的文件自动进入trashy回收站
oberblastmeister/trashy: a cli system trash manager, alternative to rm and trash-cli
通过trash list
中的编号彻底删除或恢复文件,使用-r
指定,例如恢复列表中编号为1的文件:
1 | trash restore -r 1 |
可以使用Cargo安装:
1 | cargo install trashy |
LazyGit
LazyGit是一个使用Go语言编写的终端界面Git客户端,它以一种轻量级、高效且用户友好的方式提供了对Git仓库的全面管理。
各平台的安装方法在README文件中写得很详细:
jesseduffield/lazygit: simple terminal UI for git commands
Neovim配置
我的Neovim配置参考:HC3560/HC-Config
本配置基于Neovim的开发版本(NVIM v0.12.0-dev),使用前请确定版本是否正确。
默认版本为稳定版本,切换到开发版本需要添加软件源:
1 | sudo apt-add-repository ppa:neovim-ppa/unstable |
添加软件源之后重新安装Neovim即可:
1 | sudo apt update |
使用配置文件需先安装某些插件需要使用的扩展软件:
unzip:sudo apt install unzip
字体:Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher
基本配置
base.lua
:一些基础配置,优化了Neovim的显示、搜索、缩进、剪贴板及文件管理设置,提升编辑效率。
kaymap.lua
:配置自定义快捷键,以空格键为核心,通过自定义快捷键集成全选/纯净粘贴/快速保存退出功能,优化换行导航并提供清除高亮等实用工具。
lazy.nvim
lazy.nvim是 Neovim 的现代插件管理器(🚀 Getting Started | lazy.nvim)。使用官网的配置即可。
相关配置的详细解释:lazy-nvim插件管理器基础入门 - w4ngzhen - 博客园
使用require("lazy").setup("plugins")
引入插件文件夹后,在文件夹中使用table
块配置插件即可。
colorscheme
使用Everforest主题:sainnhe/everforest: 🌲 Comfortable & Pleasant Color Scheme for Vim
Mason
Mason是一个市场,很方便地安装各个语言的lsp、formatter、linter
mason-lspconfig:williamboman/mason-lspconfig.nvim: Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
mason-tool-installer:WhoIsSethDaniel/mason-tool-installer.nvim: Install and upgrade third party tools automatically
LSP
neovim/nvim-lspconfig: Quickstart configs for Nvim LSP
Neovim Language Server Protocol 配置解释
配置Lua语言服务器,声明vim
为已知全局变量,避免LSP将vim
全局变量误报为未定义:
1 | lspconfig.lua_ls.setup { |
格式化
stevearc/conform.nvim: Lightweight yet powerful formatter plugin for Neovim
对于conform的最新版本,要求Neovim 0.10+,像Ubuntu这种系统,官方库中的Neovim的版本很可能不满足要求,安装插件后提示版本不支持,需要看Neovim官方的安装说明:
neovim/INSTALL.md at master · neovim/neovim
找到非官方的PPA库,添加PPA库之后即可安装最新构建版本的Neovim:
Ubuntu22.04 安装、简单配置 neovim1. 安装 NeoVim 2. 安装插件管理器 为了轻松地管理 Ne - 掘金
对于安装的新版本Neovim,安装conform之后可能会出现一些报错,报错原因可能是因为缺少treesitter
(nvim-treesitter/nvim-treesitter: Nvim Treesitter configurations and abstraction layer)插件,安装后报错即可消失。
Treesitter
提供代码高亮、增量选择等功能
nvim-treesitter/nvim-treesitter: Nvim Treesitter configurations and abstraction layer
:TSInstallInfo
:查看语言解释器安装信息
:TSUpdate
:更新已安装的语言解释器
Yazi
Yazi(意思是“鸭子”)是一个用 Rust 编写的终端文件管理器,基于非阻塞异步 I/O。它旨在提供高效、用户友好且可定制的文件管理体验。
在Neovim中打开Yazi悬浮窗,便于进行文件的切换与管理:
mikavilpas/yazi.nvim: A Neovim Plugin for the yazi terminal file manager
参考TheCW的nvim配置中yazi插件的配置:nvim/lua/config/plugins/yazi.lua at lua-migration · theniceboy/nvim
Yazi配置参考我的配置HC3560/HC-Config。
括号引号等自动匹配
windwp/nvim-autopairs: autopairs for neovim written in lua
Telescope
一个高度可扩展的列表模糊查找器
安装Telescope之前需要先安装ripgrep(rg):BurntSushi/ripgrep: ripgrep recursively searches directories for a regex pattern while respecting your gitignore
telescope:nvim-telescope/telescope.nvim: Find, Filter, Preview, Pick. All lua, all the time.
多光标
mg979/vim-visual-multi: Multiple cursors plugin for vim/neovim
用于一次性创建多个光标,方便对多行或多个关键字进行统一操作。
Telescope与LSP的集成(Lspsaga)
改进了Neovim内置的LSP体验
Lspsaga:Lspsaga | nvimdev
nvimdev/lspsaga.nvim: improve neovim lsp experience
书签
MattesGroeger/vim-bookmarks: Vim bookmark plugin
tom-anders/telescope-vim-bookmarks.nvim: Integrates vim-bookmarks into telescope.nvim
Typescript LSP
pmizio/typescript-tools.nvim: ⚡ TypeScript integration NeoVim deserves ⚡
这个插件性能比tsserver(以更名为ts_ls)性能好一些。
Lint
为代码提供linting(语义错误和语法检查)
自动补全
hrsh7th/nvim-cmp: A completion plugin for neovim coded in Lua.
Auto Tag
使用Treesitter自动关闭和自动重命名HTML标签
windwp/nvim-ts-autotag: Use treesitter to auto close and auto rename html tag
注意,根据官方的README文件,通过nvim-treesitter.configs
进行设置的方式已被弃用,需要迁移到新方法,使用官方提供的nvim-ts-autotag
进行设置。
字符串拼接
内置终端
akinsho/toggleterm.nvim: A neovim lua plugin to help easily manage multiple terminal windows
缩进
快速切换
rmagatti/alternate-toggler: A very small plugin for toggling alternate “boolean” values.
Surround
轻松添加/更改/删除周围的分隔符对
快速选中
使用Treesitter实现:
TreeSJ
用于拆分/连接代码块
Wansmer/treesj: Neovim plugin for splitting/joining blocks of code
注释
TODO注释
folke/todo-comments.nvim: ✅ Highlight, list and search todo comments in your projects
多行复制
hinell/duplicate.nvim: Duplicate visual selection, lines, and textobjects
在官方文档duplicate.nvim/doc/index.md at main · hinell/duplicate.nvim #legendary中,建议使用Legendary.nvim来配置键盘映射。
项目切换
快速跳转
状态栏
Rust
Cursorline
在光标上突出显示单词和行
ya2s/nvim-cursorline: A plugin for neovim that highlights cursor words and lines
Move
快速移动行或块
fedepujol/move.nvim: Gain the power to move lines and blocks and auto-indent them!
Noice
高度实验性的插件,完全替换了messages
、cmdline
和popupmenu
的 UI。
gitsigns
Git的深度缓冲集成,用于在实时显示文件的Git修改状态以及git blame信息。
lewis6991/gitsigns.nvim: Git integration for buffers
ufo
增强代码折叠功能,同时保持高性能。
kevinhwang91/nvim-ufo: Not UFO in the sky, but an ultra fold in Neovim.
statuscol
提供可配置的’statuscolumn’和点击处理器的状态栏插件。
hlslens
搜索功能增强。nvim-hlslens帮助你更好地浏览匹配信息,无缝地在匹配实例之间跳转。
kevinhwang91/nvim-hlslens: Hlsearch Lens for Neovim
scrollbar
可扩展的Neovim滚动条。可以在滚动条上显示光标当前位置与诊断信息,配合其他插件可实现git信息与搜索信息的高亮显示。
petertriho/nvim-scrollbar: Extensible Neovim Scrollbar
Neovide
参考链接:
从零开始配置 Neovim(Nvim) - MartinLwx’s Blog
Neovim配置——从入门到放弃 - lavateinn - 博客园
neovim入门指南(三):LSP配置(上) - ISLAND
neovim入门指南(四):LSP配置(下) - ISLAND
沉浸式写代码 | 和我一起配置Neovim 0.8【重制】_哔哩哔哩_bilibili
Neovim 配置(上) | TypeScript | Rust | Lua | 无人声 (感觉写的稀碎,留着看看风景吧hh)_哔哩哔哩_bilibili
Neovim 配置(下) | TypeScript | Rust | Lua | 无人声_哔哩哔哩_bilibili
Neovim 里最完美的 TypeScript ( JavaScript / React ) 配置!_哔哩哔哩_bilibili
bitterteasweetorange/nvim: Neovim 0.9 configuration for coding React, TypeScript and Rust
从0开始配置基于lua的neovim (lazy.nvim重制版)_哔哩哔哩_bilibili
msmtp
msmtp是一个轻量级邮件工具,配置使用SMTP后可以很方便地使用命令行发送邮件。
以下是针对QQ邮箱使用msmtp
的用户级配置详细步骤,包含每一步的作用说明:
1. 安装 msmtp
1 | sudo apt install msmtp msmtp-mta |
- 作用:安装轻量级SMTP客户端
msmtp
,用于通过命令行发送邮件。
2. 创建用户级配置文件
在用户主目录下创建配置文件~/.config/msmtp/config
:
1 | mkdir -p ~/.config/msmtp |
- 权限说明:
600
确保仅当前用户可读写,防止敏感信息泄露。
3. 编辑配置文件
打开~/.config/msmtp/config
并填入以下内容:
1 | 通用配置 |
关键配置项解释
host
: QQ 邮箱的 SMTP 服务器地址。port 465
: SSL 加密端口(若用端口 587 需改用tls_starttls on
)。auth on
: 启用 SMTP 认证,必须填写用户名和密码。password
: 需使用 QQ 邮箱授权码(非邮箱密码!生成方法见附录)。tls on
: 强制全程 TLS 加密,保障传输安全。tls_trust_file
: 指定系统 CA 证书路径,避免证书验证错误。
设置日志文件权限
1 | sudo chmod 600 ~/.config/msmtp/msmtp.log |
4. 测试邮件发送
通过命令行发送测试邮件:
1 | echo -e "Subject: msmtp测试邮件\n\n这是一封来自msmtp的测试邮件。" | msmtp --debug recipient@example.com |
- 参数说明:
--debug
: 显示调试信息,便于排查问题。recipient@example.com
: 替换为实际收件人邮箱。
5. AppArmor问题排查
如果系统使用AppArmor(常见于 Ubuntu),可能拦截msmtp
的日志写入操作。
查看AppArmor状态:
1 | sudo apparmor_status |
- 如果输出中包含
msmtp
的配置为enforce
模式,说明策略正在限制操作。
永久修复:更新AppArmor配置文件
若默认策略文件无自定义配置,可基于当前策略生成新规则:
1 | 切换到 AppArmor 配置目录 |
完整修改后的配置文件片段
修改后的 usr.bin.msmtp
文件相关部分如下:
1 | 原有规则 |
保存并重新加载策略
1 | sudo vim /etc/apparmor.d/usr.bin.msmtp # 按上述步骤修改 |
私有云图床搭建(EasyImages2.0)
icret/EasyImages2.0: 简单图床 - 一款功能强大无数据库的图床 2.0版
【宝塔面板系列】10分钟搭建一个简单图床——EasyImage 简单到无需数据库!_哔哩哔哩_bilibili
【宝塔面板系列】10分钟搭建一个简单图床——EasyImage 简单到无需数据库!-我不是咕咕鸽
不使用宝塔面板 安装 EasyImage 简单图床 | 追殇 Coding
Zellij
用Rust编写的又一个好用的终端复用器(Terminal Multiplexers),类似于tmux
Zellij是一个面向开发者、运维人员和所有喜爱终端的用户的工作空间。功能丰富且开箱即用。
官网:Zellij,官网的网页设计和配色都很棒,且官方默认支持Everforest主题,好评!!!
最近对使用Rust编写的项目情有独钟:D
我的Zellij配置参考:HC3560/HC-Config
安装方法和使用教程官方网站的文档中已经非常详细了:Introduction - Zellij User Guide、Screencasts & Tutorials
有Rust环境的话直接使用Cargo安装即可:
1 | cargo install --locked zellij |
相关介绍:
Is Tmux DEAD? Zellij is the new multiplexer written in Rust(B站搬运:Tmux 过时了吗?探索Zellij:Rust语言打造的全新终端多路复用器!_哔哩哔哩_bilibili)
zellij - 比tmux更容易学习和上手的终端复用工具_哔哩哔哩_bilibili
还有一个面向Zellij开发者的采访,也比较有意义,内容比较长,先码一下,以后再看:
Interview of Aram the maintainer of Zellij - YouTube(B站搬运:对话 Zellij 作者:探秘这款终端复用器的幕后故事_哔哩哔哩_bilibili)
Btop
一个功能强大的资源监视器,显示处理器、内存、磁盘、网络和进程的使用情况和统计数据,类似于Windows中的任务管理器。
官网:aristocratos/btop: A monitor of resources
一般的发行版系统默认自带一个最基础资源监视器:top,但是界面非常简陋,且数据不直观。
因此,一部分系统中会自带另一个更现代的资源监视器:htop,总体上好用了很多,但监控的数据不是很全,交互体验比较一般。
而Btop是一个功能非常强大的资源监视器,可以在一个界面上获取多种系统资源的监控信息,支持图表显示和全彩色显示,交互模式简洁易用,有完整的鼠标支持,而且官方默认支持Everforest主题,好评!!!
Everforest主题真的巨好用!吹爆!
sainnhe/everforest: 🌲 Comfortable & Pleasant Color Scheme for Vim
大多数系统中使用默认的包管理器即可快速安装,例如Ubuntu中:
1 | sudo apt install btop |
这个视频介绍了Linux中的各种资源监视器,可以参考一下:
Top 10 ways to monitor Linux in a Terminal(B站搬运:还在用 Top 监控 Linux 性能?OUT了!这几款神器效率提升10倍!_哔哩哔哩_bilibili)
例如专用于监控网络流量的iftop:
iftop: display bandwidth usage on an interface
soarpenguin/iftop: display bandwidth usage on an interface
在Ubuntu中也可以通过包管理器直接安装:
1 | sudo apt install iftop |
运行时一般需要管理员权限:sudo iftop
例如专用于监控IO(硬盘)使用率的iotop:
Tomas-M/iotop: A top utility for IO
在Ubuntu中也可以通过包管理器直接安装:
1 | sudo apt install iotop |
运行时一般需要管理员权限:sudo iotop
关于Linux中进程的不同退出信号的差别,例如terminate和kill,可以参考:
dysk
一个用于获取文件系统信息的Linux工具,用于代替默认的df
命令。
官网:dysk
GitHub:Canop/dysk: A linux utility to get information on filesystems, like df but better
它将文件系统的使用情况信息整合为一个易读的图表,带颜色显示,格式更好,并且为每个磁盘配有一个小图标。它有丰富的配置项,如果需要的话,还可以将结果输出为JSON或CSV格式。
dysk是使用Rust编写的,性能很棒!
可以直接使用Cargo安装:
1 | cargo install --locked dysk |
frp
frp是一个简单、高效的内网穿透工具,可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
安装和配置过程在官网的文档中已经非常详细了:frp
值得一提的是,新版本的frp已经默认启用了TLS连接,frps与frpc之间的流量会被全局加密,不再需要配置单个代理上的加密。
如果frps端没有配置证书,会使用随机生成的证书来加密流量。也可以通过手动配置证书来实现自定义的单向校验或者双向校验:自定义 TLS 协议加密 | frp
Ncdu
Ncdu是一个带有文本模式用户界面的磁盘使用情况分析器。
Ubuntu24.04可以直接使用apt安装:
1 | sudo apt install ncdu |
通过运行ncdu
分析当前文件夹下的硬盘占用情况,用户可以快速确定哪些文件或目录占用了最多的空间,并删除不需要的文件以释放磁盘空间。该工具还可以以交互式的方式浏览文件和目录,支持Vim快捷键,并提供有关它们的详细信息。
tldr
官网:tldr pages
tldr是一个社区项目,旨在通过实际示例简化深受喜爱的man手册。
GitHub:tldr-pages/tldr: 📚 Collaborative cheatsheets for console commands
它可以在你忘记一个命令如何使用时执行,提供比官方的man文档更为简洁清晰的现代化文档,且附带一些示例,让你不用经过额外的搜索也可以顺利使用命令完成想要做的事情。
使用npm安装:
1 | npm install -g tldr |
pipx
GitHub:pypa/pipx: Install and Run Python Applications in Isolated Environments
可以在隔离环境中安装和运行Python应用程序。
在新版的Ubuntu中,使用pip安装软件时可能会出现报错:
1 | error: externally-managed-environment |
此时可以安装pipx代替pip:
1 | sudo apt install pipx |
此时,安装软件时用pipx
将pip
代替,即可正常安装。
安装软件后,可能会遇到添加环境变量的提示(以安装
The Fuck
为例):
1
2
3
4
5
6
7
8 installed package thefuck 3.32, installed using Python 3.12.3
These apps are now globally available
- fuck
- thefuck
⚠️ Note: '/home/hc/.local/bin' is not on your PATH environment variable. These apps will not be globally
accessible until your PATH is updated. Run `pipx ensurepath` to automatically add it, or manually modify your
PATH in your shell's config file (i.e. ~/.bashrc).
done! ✨ 🌟 ✨此时,按照提示执行
pipx ensurepath
,pipx会自动添加环境变量。
1
2
3
4
5
6
7 Success! Added /home/hc/.local/bin to the PATH environment variable.
Consider adding shell completions for pipx. Run 'pipx completions' for instructions.
You will need to open a new terminal or re-login for the PATH changes to take effect.
Otherwise pipx is ready to go! ✨ 🌟 ✨添加完成后,安装的软件即可正常使用。
The Fuck
GitHub:nvbn/thefuck: Magnificent app which corrects your previous console command.
The Fuck是一款令人惊叹的应用程序,它能够纠正之前在控制台中输入的命令错误。
当一个命令输错时,可以输入fuck
或thefuck
,软件会自动帮助纠错,确认纠错正确后直接回车即可运行正确的命��。
但最新版的Ubuntu使用pipx安装运行后会提示:
1 | Traceback (most recent call last): |
这是由于The Fuck的作者构建时使用的是旧版本的Python,新版本的Python中有的依赖缺失,导致软件无法使用。
且看到仓库上一次更新版本已经是好几年前了,且请求适配新版本Python或反映其他问题的Issues与Pull requests严重堆积,没有得到处理。因此大概率作者已经放弃继续维护这个仓库了。
在Issues中找到这样一条:The repo is dead · Issue #1466 · nvbn/thefuck,有用户推荐了一个新的在维护中的替代品“Pay Respects”,因此打算用它来代替The Fuck。
将在下一节中详细介绍。
Pay Respects
GitHub:iffse/pay-respects: Command suggestions, command-not-found and thefuck replacement written in Rust
这是一个用Rust编写的命令建议、命令未找到和thefuck替代方案。
pay-respects用Rust编写,反应速度很快,二进制文件极小,可以直接使用Cargo安装,非常符合我的需求。
1 | cargo install pay-respects |
可选安装其他模块:
1 | cargo install pay-respects-module-runtime-rules |
如果使用的shell是zsh,需要在.zshrc
配置文件中加入配置:
1 | alias f="$(pay-respects zsh)" |
其他使用方法可参考官方文档。
本文链接: https://hanqingjiang.com/2025/02/13/20250213_server_advancedLinuxConfiguration/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
