Table of Contents

  1. emacs magit,org-mod
    1. emacs基本使用
    2. dired文件夹模式
    3. emacs windows上使用
    4. org-mod
      1. org文件导出为html文件
      2. 列表和checkbox使用
      3. 其它:
      4. org中到处的文件如何自动把回车放进去
    5. 标签搜索
    6. yasnippet
    7. eww文本浏览器
    8. emacs 帮助相关
    9. emacs搜索
      1. windows说明
      2. 变量定义和函数定义的方法
      3. emacs插件推荐
      4. emacs选择多行字符串,方便的方法
    10. emacs插件推荐ido和smex
    11. eww 快捷键
    12. emacs grep 命令
    13. emacs快速粘贴图片到org文件中
    14. 如何给shell添加书签
    15. [eshell 命令行ps -ef grpe java后,无法显示全命令行参数](#org4d80c56)
    16. magit使用
    17. magit 常用命令
    18. magit merge
    19. emacs leetcode-cn
    20. vim emacs 快捷键比较
    21. 安装自定义的theme
    22. windows休眠
    23. 如何设计并实现一个百万并发的服务端程序架构
    24. tcpdump和wirdshark
    25. macbook截图工具

emacs magit,org-mod

好久没有更新了,今年看能坚持多久!

emacs基本使用

ctrl x 4 b
ctrl x f ctrl o,焦点不过去

ctrl w 剪切,cmd w 复制
ctrl y 粘贴

C-c C-l 编辑链接(此处为小写L)
C-c C-o 打开链接(相当有用)

ctrl / 非常有用的撤销功能

具体怎么改你得看org-structure-template-alist的文档(C-h v org-structure-template-alist)

滚动另外一个窗口的屏幕向下/向上 ctrl cmd v/ctrl shift cmd v

dired文件夹模式

  1. 选中文件后,在另外窗口打开,直接 按 o 即可; f 直接在当前缓冲区查看文件
  2. 焦点不过去,直接查看, ctrl o
  3. 查看帮助命令,h
  4. 快速查看blame
  5. git blame

比如我要看当前区域的代码是 who/which commit 提交的。这种都是临时性的需求,因此它是通过特殊 command(C-c M-g b) 以开关的形式操作的(不然看起来太乱了)

= 比较文件
v 查看文件
D 删除文件
C 拷贝
R 重命名
Z 压缩
w 复制文件名
m 标记
u 取消标记

C-c * 将本行设置为标题/正文

cmd shift &; 异步执行程序
cmd shift !;执行程序,命令行比较少

emacs windows上使用

  1. 使用git命令要用eshell方式,其它方式有乱码,没有找到方法如何修改
  2. eshell中定义alias,快速命令 gs -3 => git log -3

需要在eshell中执行,alias gs ‘git log $*’
每次只执行一次,emacs会自动记忆这个配置,内容保存在.eamcs.d/eshell/alias文件中

ps:ctrl c + ctrl , => 快速调用引用 并选择要插入的内容

org-mod

- org教程
- org教程2

org教程3
ctrl c,ctrl l ;插入链接
ctrl c,’ ;插入代码??

org文件导出为html文件

  1. org导出html文件
  2. 编辑完org,要导出ctrl c,ctrl e ,h导出html文件
  3. 执行sh mvhtml2post.sh

列表和checkbox使用

  1. cmd shift ret – checkbox
  2. 改变状态方法,ctrl c,ctrl c
  3. todo ctrl shift ret

其它:

  1. cmd 左右,升级降级标题
  2. 上线两个列表交换位置,cmd shift 上/下
  3. 循环改变标志符号 ctrl c -

ppp4. 标题间跳转

org中到处的文件如何自动把回车放进去

在文件开头加上
\#+OPTIONS: \n:t
或者 (setq org-export-preserve-breaks t)

标签搜索

建立好了tag系统,可以将相关信息收集到一个表中

C-c / m 或 C-c \ 标准检索, 按照tag进行检索
C-c a m 按标签搜索多个文件 需要把文件加入全局agenda

yasnippet

支持新建templage
ctrl c & ctrl n

eww文本浏览器

  1. eww 提示输入浏览网址
  2. G 重新输入并载入网址
  3. g 重载
  4. b/B 添加/显示书签
  5. & 外部浏览器打开url
  6. q 退出
  7. l/r 后退/前进
  8. /< 文件末尾和开头

  9. w 拷贝文章url
  10. S list
  11. s switch buffer
  12. cmd ret 创建新buffer

emacs 帮助相关

ctrl h ,m mod模块帮助
ctrl h ,f/v/k 查询命令、变量、快捷键

emacs搜索

project-find-name 搜索文件名
project-find-rgrep 搜索文件中的文本内容,linux和mac使用很爽

另外两个搜索
搜索参数定义
搜索所有函数引用

M-x xref-find-definitions:查找符号定义。
M-x xref-find-references:查找符号引用。

(global-set-key (kbd “C-c d”) ‘xref-find-definitions) ;; 绑定到 C-c d
(global-set-key (kbd “C-c r”) ‘xref-find-references) ;; 绑定到 C-c r

generate_tags.sh; shell脚本生成tags文件

#!/bin/bash
# 生成 TAGS 文件,支持多种语言
find . \( -name "*.java" -o -name "*.js" -o -name "*.jsp" -o -name "*.html" -o -name "*.css" -o -name "*.cpp" -o -name "*.hpp" -o -name "*.go" -o -name "*.py" -o -name "*.php" -o -name "*.sh" -o -name "*.yaml" -o -name "*.yml" \) -print | etags -
echo "TAGS file generated successfully."


chmod +x generate_tags.sh
./generate_tags.sh

自动加载
(setq tags-table-list '("~/project1/TAGS" "~/project2/TAGS"))

加载:M-x visit-tags-table。
查找定义:M-.。
查找引用:M-x xref-find-references。

windows说明

windows系统文件使用gbk,emacs默认支持utf8
用字符串递归搜索文件内容时,会遭遇不确定的乱码问题,目前无法解决
换一种方式,使用“rg”的方式进行查询,它支持多种文件字符集格式的查找,
需要再验证下,是否可以解决windows中使用emacs进行文本查询的问题

注意,需要添加git的环境变量路径,因为它会使用习惯linux命令

变量定义和函数定义的方法

emacs插件推荐

emacs推荐插件10个 ctrl-c,ctrl-l 插件

emacs选择多行字符串,方便的方法

mac使用 ctrl shift 上下,直接就可以选择文本了,这个真方便

emacs插件推荐ido和smex

ido是文件夹提示
smex是命令提示
这两个插件很方便

eww 快捷键

w 拷贝当前页面 URL
G 访问指定的url地址
g 刷新当前页面
q 退出
l 后退
r 前进
H 历史查看
& 外部网页访问
v 查看网页源码
b 添加当前网页到书签
B 查看书签
R 开启阅读模式
n/p 自动跳转到下一页/上一页
M-RET 在新 buffer 内打开链接

emacs grep 命令

grep –color=auto -nH –null -e “images” -r
递归-r

emacs快速粘贴图片到org文件中

html文件中应该是绝对路径
/images/11.png
**需要手工修改**,此处需要注意

脚本要修改,copy的目标路径,html文件的png改为绝对路径

显示与不显示图片的快捷键
C-c C-x C-v:切换图片的内联显示(toggle inline images)。这个命令可以让你在显示和隐藏图片之间切换。

– #+ATTRORG: :width 60%
img

如何给shell添加书签

emacs shell添加书签未成功,eshell尝试了下可以的
eshell是emacs内置shell,完全emacs lisp编写,更集成与emacs环境
注意要使用 cd ssh:myu@192.168.1.13: 方式打开,没有cd 无法显示正常的文件颜色
如下图示例

M-x eshell: 启动 Emacs 自己的 shell 实现,它完全用 Emacs Lisp 写成,更加集成 Emacs 功能。
M-x term: 这个命令提供了一个更接近传统终端的环境,支持复杂的文本界面,比如那些用于文本编辑器或音乐播放器的界面。
M-x ansi-term: 类似于 term,但它更好地支持 ANSI 转义序列,更适合需要运行交互式程序的情况
```
(defun my-new-eshell ()
“Open a new uniquely named eshell instance.”
(interactive)
(let ((eshell-buffer-index (1+ (length (seq-filter (lambda (buf)
(string-prefix-p “eshell” (buffer-name buf)))
(buffer-list))))))
(eshell eshell-buffer-index)))

```
将这个函数添加到书签中:
首先,确保你已经安装并加载了 bookmark 模块。
使用 M-x bookmark-set 命令创建一个新书签,当提示你命名书签时,你可以命名为 “New Eshell”。
打开书签列表 (M-x bookmark-bmenu-list),找到你刚才创建的书签,然后按 e 来编辑这个书签。
将 filename 改为你的 Emacs Lisp 文件位置,并将 handler 设置为 my-new-eshell。

通过 C-u M-x eshell 完成。这样做会提示你输入一个缓冲区编号

– #+ATTRORG: :width 60%
img

eshell 命令行ps -ef | grpe java后,无法显示全命令行参数

```
(add-hook ‘eshell-mode-hook
(lambda ()
(setq truncate-lines nil)))

ps -ef grep java less -S

```

ps: sudo -s 切换到root账号后
再ps,可以显示全部命令,并且可以换行

magit使用

ps: 经过测试,发现如下配置也可以安装,修改源

(setq package-check-signature nil)
(setq package-archives
      '(("gnu"   . "https://elpa.gnu.org/packages/")
	("melpa" . "https://melpa.org/packages/")))

快速唤出方式
mysrc + tab 键

s:add 增加
cc:commit 添加注释
ctrl c + ctrl c :确认提交
P p:push推送到远程
帮助信息:ctrl h,m

L head , 空格查看,光标不移动;回车查看,光标移动

magit 常用命令

magit-status
绑定的命令:ctrl x g
s stage;u unstage
c , c commit
ctrl c,ctrl c 提交
推送 push为 P,u 即可完成远程仓库的推送

magit-find-file,我们可以比如绑定到C-x m f,它可以指定访问某个分支中某个文件,且是放到一个临时的 buffer,只能说极其好用

h 显示帮助命令
magit使用的文档,日文版本的,感觉还不错
https://joppot.info/posts/f2721fb2-0942-4c4e-90e2-0dbdbb329bce

magit merge

Magit 会高亮冲突的文件,显示 Unmerged 状态。
按 e 打开冲突文件,手动解决冲突。
冲突解决后,按 s 将文件标记为已解决。

emacs leetcode-cn

最近着迷emacs,刷leetcode题想也用下(可以排除干扰),
下载了两个插件,一个是官方的插件,还有一个leetcode-cn改造版本,
感觉第二个改动比较小,以前没有接触过lisp语言,临时抱佛脚了一把,
居然被我调通了,特此记录下。

  1. 安装leetcode-cn,是否工下载的包,直接手工配置,参考如下:

    ;; leetcode-cn.el-master leetcode-20241115.527-elpa.bk emacs安装graphql插件 (add-to-list ‘load-path “~/.emacs.d/leetcode-cn.el-master/”) (add-to-list ‘exec-path “/home/myu/.local/bin/”) ;;(add-to-list ‘exec-path “/home/myu/.local/bin”) ;;(add-to-list ‘load-path “~/.emacs.d/leetcode-20241115.527-elpa.bk/”) (require ‘leetcode) (setq leetcode-prefer-language “java”) (setq leetcode-display-results nil) ;; 禁用结果中的样式显示 ;;(setq leetcode-site “https://leetcode.cn/”) ;;(setq leetcode-site “https://leetcode-cn.com/”) ;; 其他设置,比如保存解答 (setq leetcode-save-solutions t) (setq leetcode-directory “~/leetcode”) (setq leetcode-prefer-sql “mysql”)

  2. 还手工安装了这几个插件

    emacs package-install graphql spinner

    还有这些: 1687 pip3 install graphql 1871 pip3 install semgrep 1874 sudo snap install semgrep 1913 pip3 install jeepney 1915 pip3 install browser-cookie3 1917 pip3 install jeepney 1918 pip3 install dbus-python

  3. 到这里,更郁闷的来了,可以显示leetcode问题,总是提交失败,没办法硬着头皮调试leetcode.el代码,
    最后找到这段代码后面没执行,(let* ((my-cookies (executable-find “mycookies”));直接
    将路径写死,然后问题就解决了。

    (aio-defun leetcode–login () “Steal LeetCode login session from local browser. It also cleans LeetCode cookies in `url-cookie-file’.” ;;(debug) (leetcode–loading-mode t) (message “leetcode–login—”) (ignore-errors (url-cookie-delete-cookies leetcode–domain)) (message “leetcode–login—222”) (aio-await (leetcode–csrf-token)) ;knock knock, whisper me the mysterious information (message “3333”) (message “exec-path: %s” exec-path)

    ;;/home/myu/.local/bin/my_cookies ;;/home/myu/.local/lib/python3.10/site-packages/my_cookies ;;(message “Does my_cookies exist? %s” (file-exists-p “/home/myu/.local/lib/python3.10/site-packages/my_cookies”)) (message “my_cookies output: %s” (shell-command-to-string “/home/myu/.local/bin/my_cookies -d leetcode.cn”)) (let* ( (message “444000”) (my-cookies “/home/myu/.local/bin/my_cookies”) ;;(let* ((my-cookies (executable-find “my_cookies”)) (message “444”) ;;(debug) (my-cookies-output (shell-command-to-string (concat (shell-quote-argument my-cookies) “ -d leetcode.cn”))) (message “555”) ;;(debug) (cookies-list (seq-filter (lambda (s) (not (string-empty-p s))) (split-string my-cookies-output “\n”))) (cookies-pairs (seq-map (lambda (s) (split-string s)) cookies-list)) (leetcode-session (cadr (assoc “LEETCODE_SESSION” cookies-pairs))) (leetcode-csrftoken (cadr (assoc “csrftoken” cookies-pairs)))) (leetcode–debug “login session: ‘%s’” leetcode-session) (leetcode–debug “login csrftoken: ‘%s’” leetcode-csrftoken) (url-cookie-store “LEETCODE_SESSION” leetcode-session nil leetcode–domain “/” t) (url-cookie-store “csrftoken” leetcode-csrftoken nil leetcode–domain “/” t)) (aio-await (leetcode–csrf-token)) ;knock knock, whisper me the mysterious information (leetcode–loading-mode -1))

  4. 今天先到这里,后面再研究研究为什么

vim emacs 快捷键比较

oemacs 与 vim 命令对比(网上摘录)
-----------------------------------------------------------------
exit:                           C-x C-c         :qa /:wq /:xa /:q!
Get back/command mode:          C-g             <esc>
Backward(left):                 C-b             h
Forward(right):                 C-f             l
Next(down):                     C-n             j
Previous(up):                   C-p             k
stArt of line(^):               C-a             0
End of line($):                 C-e             $
mUltiple commands:              C-u nnn cmd     nnn cmd
Multiple commands:              M-digitkey cmd
save File:                      C-x C-s         :w
beginning of buffer:            M-<             1G
end of buffer:                  M->             G
*scroll forward 1 screen*:        C-v             ^F
scroll forward 1/2 screen:                      ^D
scroll forward 1 line:                          ^E
*scroll backward 1 screen*:       M-v             ^B
scroll backward 1/2 screen:                     ^U
scroll backward 1 line:                         ^Y
scroll the other window:        M-C-v
delete under cursor:            C-d             x
delete from cursor to eol:      C-k             D
iSearch forward:                C-s
isearch Reverse:                C-r
Search forward:                 C-s enter       /
search Reverse:                 C-r enter       ?
isearch regexp:                 M-C-s
isearch backward regexp:        M-C-r
search regexp:                  M-C-s enter     /
search backward regexp:         M-C-r enter     ?
Help:                           C-h C-h         :help
Help Apropos:                   C-h a
Help key Bindings:              C-h b           :help [key]
Help Info:                      C-h i
Help Major mode:                C-h m
Help tutorial:                  C-h t           :help howto
Undo:                           C-_             u
Redo:                           C-f             ^R
Mark cursor position:           C-x r SPC       m{a-zA-Z}
eXchange Mark and position:     C-x C-x
goto mark in current file:      C-x r j         '{a-z}
goto mark in any file:                          '{A-Z}
*copy region*:                    M-w             {visual}y
kill region:                    C-w             {visual}d
*Yank and keep buffer*:           C-y
Yank from kill buffer:          M-y             p
convert region to Upper:        C-x C-u         {visual}U
convert region to Lower:        C-x C-l         {visual}u
Insert special char:            C-q octalnum/keystroke
						^V decimal/keystroke
*replace*:                        M-x replace-string      :%s/aaa/bbb/g
replace regexp:                 M-x replace-regexp      :%s/aaa/bbb/g
query replace:                  M-%                     :%s/aaa/bbb/gc
query replace:                  M-x query-replace
query replace regexp:           M-x query-replace-regexp
Open file:                      C-x C-f         :r file
Save file:                      C-x C-s         :w
Save all buffers:               C-x s           :wa
Save as:                        C-x C-w file    :w file
Prompt for buffer:              C-x b
List buffers:                   C-x C-b         :buffers
Toggle read-only:               C-x C-q         :set ro
Prompt and kill buffer:         C-x k
Split vertical:                 C-x 2           :split
Split horizontal:               C-x 3           :vsplit (ver. 6)
Move to other window:           C-x o           ^Wp
Delete this window:             C-x 0           :q
Delete other window(s):         C-x 1           ^Wo
run shell in bg:                M-x compile
kill shell run in bg:           M-x kill-compilation
run make:                                       :make Makefile
check error message:            C-x`            :echo errmsg
run shell and record:           M-x shell       :!script -a tmp
...clean BS, ...                                :!col -b <tmp >record
...save/recall shell record:    C-x C-w record  :r record
run shell:                      M-! sh          :sh
run command:                    M-! cmd         :!cmd
run command and insert:         C-u M-! cmd     :r!cmd
run filter:                     M-| file        {visual}:w file
run filter and insert:          C-u M-| filter  {visual}:!filter
show option                                     :se[t] {option}?
reset option to default                         :se[t] {option}&
reset boolean option                            :se[t] no{option}
toggle boolean option                           :se[t] inv{option}
wrap text at column 72                          :se tw=72
do not wrap                                     :se tw=0
autoindent                                      :se ai
expand tab                                      :se et
————————————————

			    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
			
原文链接:https://blog.csdn.net/hejinjing_tom_com/article/details/51700911

安装自定义的theme

github下载文件,zenburn-theme.el

(add-to-list ‘custom-theme-load-path “~/.emacs.d/themes/”)
(load-theme ‘zenburn t)

windows休眠

shutdown /h

如何设计并实现一个百万并发的服务端程序架构

tcpdump和wirdshark

tcpdump -n -X -s 0 host 192.168.1.7 -w tt.pcap
- 为命令参数, host为过滤命令
读pcap文件
tcpdump -n -X -r tt.pcap

总结下它们使用命令的联系和区别

DONE macbook截图工具

ctrl shift cmd 4 截图到剪贴板
ctrl y 粘贴到org文档中

img
alt+x,
org-download-clipboard
参考:
https://blog.csdn.net/daerzei/article/details/104128992
新建/编辑
ctrl c,ctrl l
tab

https://blog.csdn.net/daerzei/article/details/104128992
打开
ctrl c ,ctrl o
配置第五行
跳转到test.org文件的A锚点处

<file:///docs/test.md>

2015总结orog