Emacs Issue

Emacs Issue 前言 这个文章是 记录个人使用 Emacs 相关信息/问题 它可能不适用于所有人 这可能会给遇到相同问题时的 Emacser 有所帮助! 如果你遇到了某些 Emacs 相关问题, 并解决了, 可以在下面 评论区 记录下来, 我会尝试添加到文章当中 Issue Minibuffer 如何换行? C-q C-j 让 Minibuffer 支持使用 拼音 查找 例如在 org-mode 中使用 consult-imenu 命令时, 弹出的内容可以使用 拼音 查找 以下方法本人是使用 orderless, vertico, consult, 三个包配合用的 (use-package vertico :ensure t :hook (after-init . vertico-mode)) (use-package consult :ensure t) (use-package orderless :ensure t :config (setq completion-styles '(orderless basic) completion-category-defaults nil completion-category-overrides '((file (styles partial-completion)))) ;; 对 vertico 进行拼音查找, 全拼的第一个字母, 例如找 配置, 输入 pz 两个字母 (defun completion--regex-pinyin (str) (orderless-regexp (pinyinlib-build-regexp-string str))) (add-to-list 'orderless-matching-styles 'completion--regex-pinyin) ) ;; 如果使用的 小鹤双拼, 可以使用 https://github.com/ISouthRain/pinyinlib.el 仓库, 配置: (setq pinyinlib-use-method 'xiaohe) Windows org-mode 使用 GnuPG(GPG) 加密后无法解密, 加密信息出现 ^M 比如使用 org-crypt 这个包进行 GPG 加密时, 却无法解密 原因是 文件换行符 问题, Windows 系统的默认换行符是 CRLF, 只需将 CRLF 改为再加密就不会出现 CRLF 方法一: 添加函数, 删除 ^M 结尾的信息再进行解密 ;; 解决 ^M 解密问题 (defun freedom-org-decrypt-entry () "移除行尾 ^M(CRLF) 并解密 Org-decrypt Replace DOS eolns CR LF with Unix eolns CR" (interactive) (goto-char (point-min)) (while (search-forward "\r" nil t) (replace-match "")) (org-decrypt-entry)) 方法二: 加密之前 将文件的换行符改为 LF , 例如: C-x <RET> f utf-8-unix <RET> Windows Emacs 使用 Daemon 方式打开文件时, 文件名乱码导致无法打开对应文件 我使用添加以下配置修复 (require 'server) ;; 如果没有启动 daemon server 就启动 (unless (server-running-p) (server-start)) ;; 防止 windows 使用 server 打开中文文件名乱名导致无法打开文件 (when (eq system-type 'windows-nt) (setq locale-coding-system 'gb18030) ;此句保证中文字体设置有效 (setq w32-unicode-filenames 'nil) ; 确保file-name-coding-system变量的设置不会无效 (setq file-name-coding-system 'gb18030) ; 设置文件名的编码为gb18030 ) Org-mode 的 Table 表格没有对齐问题 这个是由于 中文字体 和 英文字体宽度不等宽导致, 设置Emacs使用某些 等宽字体 就可以解决 等宽字体, 两个例子 Iosevka(英文) GitHub - be5invis/Iosevka: Versatile typeface for code, from code. 霞鹜文楷(中文) GitHub - lxgw/LxgwWenKai: An open-source Chinese font derived from Fontworks’… 使用以下配置可以解决, 只有对应某个系统, 就能加载对应Emacs的配置, Emacs 自动识别 这个配置也相当于配置了 Emacs字体相关设置 darwin 属于 Mac 系统 Windows-nt 属于 Windows 系统 gnu/Linux 属于 Linux 系统 (when (eq system-type 'darwin) (setq fonts '("SF Mono" "冬青黑体简体中文")) (set-fontset-font t 'unicode "Apple Color Emoji" nil 'prepend) (set-fontset-font t 'unicode "Hack Nerd Font Mono" nil 'append) (set-face-attribute 'default nil :font (format "%s:pixelsize=%d" (car fonts) 16k))) (when (eq system-type 'windows-nt) ;; (setq fonts '("Iosevka" "霞鹜文楷")) (setq fonts '("Iosevka" "微软雅黑")) (set-fontset-font t 'unicode "Segoe UI Emoji" nil 'prepend) (set-fontset-font t 'unicode "Segoe UI Symbol" nil 'append) (set-fontset-font t 'unicode "Hack Nerd Font Mono" nil 'append) (set-face-attribute 'default nil :font (format "%s:pixelsize=%d" (car fonts) 20)));; 只有 双数 才能 对齐 (when (eq system-type 'gnu/linux) (unless IS-Termux (setq fonts '("Iosevka" "微软雅黑")) (set-fontset-font t 'unicode "Segoe UI Emoji" nil 'prepend) (set-fontset-font t 'unicode "Segoe UI Symbol" nil 'append) (set-fontset-font t 'unicode "Hack Nerd Font Mono" nil 'append) (set-face-attribute 'default nil :font (format "%s:pixelsize=%d" (car fonts) 20)))) (if (display-graphic-p) (dolist (charset '(kana han symbol cjk-misc bopomofo)) (set-fontset-font (frame-parameter nil 'font) charset (font-spec :family (car (cdr fonts)))))) 类似方法有 GitHub - tumashu/cnfonts: emacs中文字体配置工具。可以快速方便的的实现中文字体和英文字体等宽(也就是常说的中英文对齐)。 Ripgrep 无法搜索中文 例如使用以下命令无法搜索中文: consult-ripgrep ripgrep-regexp ;; 解决 ripgrep 无法搜索中文和 consult-ripgrep 无法搜索中文 (setq default-process-coding-system '(utf-8-unix . gbk)) ;; 默认(utf-8-dos . utf-8-unix)

2023 年 05 月 19 日 · 438 words · ISouthRain

ssh 密钥连接

为什么要使用 ssh 密钥 进行连接服务器?? 这样连接 更安全, 也可以做到无需密码连接 使用步骤 本地客户端创建密钥 ssh-keygen # 输入生成的密钥文件名 Generating public/private rsa key pair. Enter file in which to save the key (~/.ssh/id_rsa): # 会生成 id_rsa 和 id_rsa.pub 文件 # 输入连接的密码(此密码是用于本地用户连接而设定的, 只要使用了密钥连接服务器就默认无需再输入密码连接) # 如果为空, 无需密码 Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ~/.ssh/id_rsa. Your public key has been saved in ~/.ssh/id_rsa.pub. The key fingerprint is: SHA256:cdoRGC7IV2+vvtFzPjQAZKqun5WUIZx7Zo6dBp0spGY vm465564@root The key's randomart image is: +---[RSA 3072]----+ | o++ | | . o +.+.. | | o B = =. | | + B X o. | | E = S . .. | | o . @ o o o | | o B o o... | | . + . . +. | | ..o o. .. | +----[SHA256]-----+ 将 id_rsa.pub 文件的内容复制到 服务器 ~/.ssh/authorized_keys 进行连接服务器 ssh -p 22 username@host -i ~/.ssh/id_rsa # 如果创建密钥的时候设定了密码, 此处需要的密码是创建密钥的时候的密码, 不是服务器密码

2023 年 05 月 19 日 · 146 words · ISouthRain

Git submodule 子模块

Git Submodule 子模块 Git submodule 子模块 是将 别人的仓库 放到 自己的主仓库 中, 相当于 借用 别人的仓库(一般是依赖仓库), 而且任何人 clone 你的仓库, 可以一起 clone 子仓库, 这样就不会导致依赖减少, Git submodule 就是如何操作并管理这些 子仓库(依赖仓库) 添加 在你的 主仓库 目录下: 添加子模块进来到你的仓库 git submodule add https://Username/repo path/repo # 子模块添加进来就已经固定了 commit, 你推送的时候就是这个 commit 之后你添加相关信息推送即可 删除 删除 子仓库 所有文件及文件夹, 例如上面的 path/repo 编辑 主仓库 的 .gitmodules 文件, 将相关信息去除 将 主仓库 的 .git/modules 下相关的 子仓库 的删除 编辑 主仓库 的 .git/config 文件, 删除相关信息 git add . 如果此时不添加进去, 等下再使用 gitmodule 功能会有错误, 个人建议先 git add 保存下你删除了 某个 submodule 恢复 clone 你的主仓库 进入你仓库 git submodule init git submodule update # update 只是将子模块仓库拉取下来, 拉取下来的子模块仓库 commit 是你之前添加进来的 commit, 不会是远程最新的 commit 更新 全部更新 ...

2023 年 04 月 11 日 · 152 words · ISouthRain

CheatEngine 提升 云盘下载速度(百度云盘 为例)

前言 国内的网盘的体验真的一言难尽, 速度方面更是令人难受, 百度云盘 最为突出!! 百度云盘的限速是真的难受, 只有 几十kb, 企业想赚钱可以理解, 但吃相太难看了! 本文以 百度云盘 为例, 其它网盘类似 原理 借助 CheatEngine 修改 软件识别时间 以达到加速的效果, 比如你要下载 1.2 m/s 的东西, 如果你 10k/s , 那么需要 120s 假设你在 9:30 开始下载, 那么你在 9:32 会下载完, 使用 CheatEngine 就是将 时间加速, 让软件识别到你时间变了, 相当于下载时间也跟上了, 就是你将时间加速 120 倍, 那么你的下载速度就是 1.2m/s 是否有风险? 完全无风险, 因为你没有做违规的事!! 所需工具 Cheat Engine (免费开源) 你的云盘软件 效果如下: 修改前 下图演示因为我录这个之前使用过加速了, 所以下载总进度一下子跳那么多 可以看到下载进度加的非常缓慢(甚至不动) 修改后 可以看到, 虽然软件速度不变, 但是下载进度加快了, 网络占用也多, 说明加速成功了 使用步骤 将你的网盘软件正在下载…… 打开 任务管理器 (以 Windows 为例) 打开 PID 进程(右键名称), 将 PID 勾上 找到你网盘软件的 PID 进程, 将你的网盘软件正在下载…… 看到 进程在使用网络 , PID 为 13140 打开 CheatEngine 软件 右键显示 10进制, 找到对应的 PID , 并 点击对应的 PID 进程, 然后点击 打开 将你的 网盘软件 下载暂停 开启加速, 开到最大, 并点击 应用 打开你的 网盘软件 继续下载, 就可以看到下载非常快了 注意: 可能你看到的网盘软件下载速度还是一样慢, 别担心, 你已经加速了, 你可以看一下你的 网络下载占用, 或者看网盘软件的下载进度是不是加快了 参考来源 感谢 零度解说 ...

2023 年 04 月 08 日 · 124 words · ISouthRain

Emacs Gnus 使用 Gmail

介绍 Xinetd 是一个互联网多功能的工具, 在此这里只使用它的 端口转发 功能 端口转发 是将服务器端口进行数据转接, 例如: 当你使用服务端口配置好了 imap.gmail.com + 端口, 客户端口就可以直接访问 服务器IP + 端口 就相当于你访问的是 imap.gmail.com + 端口 的数据, 这样就可以避免无法访问gmail 要求 一台可以访问 gmail 的服务器 安装 Xinetd apt install xinetd 编辑 Xinetd 配置文件, 让gmail工作 vim /etc/xinetd.d/gmail /etc/xinetd.d/gmail 文件内容: # /etc/xinetd.d/gmail service imap { type = UNLISTED port = 993 bind = 0.0.0.0 socket_type = stream wait = no user = nobody redirect = imap.gmail.com 993 per_source = UNLIMITED cps = 100 2 } service smtp-465 { type = UNLISTED port = 465 bind = 0.0.0.0 socket_type = stream wait = no user = nobody redirect = smtp.gmail.com 465 per_source = UNLIMITED cps = 100 2 } service smtp-587 { type = UNLISTED port = 587 bind = 0.0.0.0 socket_type = stream wait = no user = nobody redirect = smtp.gmail.com 587 per_source = UNLIMITED cps = 100 2 } 运行服务 service xinetd start Hacker Enjoy 把你的Gnus配置接受服务 `imap.gmail.com` 改成 对应于你的 服务器IP 发送邮件设置也一样改成你的服务器IP

2022 年 06 月 04 日 · 153 words · ISouthRain