emacs 重新加载磁盘上的文件


author: hjjdebug

date: 2024年 07月 04日 星期四 14:05:25 CST

descriptor: emacs 重新加载磁盘上的文件


当我们修改了磁盘上文件,我们会存盘.

但有时候屏幕上显示的文件内容不符合我们的要求了, 例如mess up,

或者不能显示到指定的行,就需要重新从磁盘加载文件了.

从磁盘重新加载文件,emacs 给出的是 revert-buffer 命令.

但这个命令有时候也不能把屏幕拯救回来.

例如: 由于需要某种需要,我们对屏幕进行了窄化, narrow to region, narrow to function等

等到做完一些编辑后,我再把屏幕进行宽化, widen

发现区域的顶部不能恢复到第1行了.

此时 rever-buffer 命令也不行.

想恢复到第一行只能先 kill-buffer, 再C-x C-f 打开文件, 再找到你关注的位置.

想解决这个问题.

一种方法是找到widen 命令后为什么不能恢复视图, 这肯定跟你narrow 后的某些操作有关系.

因为如果narrow 后不进行任何编辑操作再widen 视图是没有问题的.这种解决方法估计难度会比较大.

另一种解决方法就是把你恢复视图的这些命令写成一个脚本,

这样你只要执行一下这个命令就恢复了视图,相当于一个扩展的revert-buffer 命令.

这个难度不大, 我写了如下函数

;; 定义重新加载文件函数

(defun my-revert-buffer ()

(interactive) ;; 交互命令必需有这条指令

(setq file-name (buffer-file-name)) ;; 记录你原来打开的缓冲对应的文件名

(setq pos (point)) ;;保留文件位置

(kill-buffer) ;; 删除原缓冲, 因为它的视图有毛病了

(find-file file-name ) ;; 重新打开文件, 不用你再找文件名了

(goto-char pos) ;; 跳转到你关注的位置, 省却你记忆的烦恼.

)

小函数,大用途,每条指令都这么经典不可或却!

相关推荐
Masimaro3 天前
《elisp 每日一练》—— Minor Mode 回顾与综合练习
emacs
aluluka4 天前
《elisp 每日一练》——状态栏显示管理与modeline 动态更新
emacs·lisp·elisp
aluluka5 天前
《elisp 每日一练》——minor mode 快捷键管理
emacs·lisp·elisp
Masimaro5 天前
《elisp 每日一练》——状态栏显示管理与modeline 动态更新
emacs
Masimaro7 天前
《elisp 每日一练》——minor mode 开关变量的管理
emacs
Masimaro8 天前
《elisp 每日一练》—— Minor Mode 变量生成机制与状态控制
emacs
Masimaro9 天前
《elisp 每日一练》——文件与目录的回顾与综合练习
emacs
Masimaro16 天前
《elisp 每日一练》——minibuffer输入读取和set-transient-map 临时热键状态机
emacs
Masimaro19 天前
《elisp 每日一练》——Window 树与布局状态恢复
emacs
典典分享指南21 天前
Windows 自动化踩坑实录
python·intellij-idea·pyqt·emacs·visual studio