在 osx 终端如何移动大文件?

在 osx 终端如何使用 mv 命令移动大文件,遇到的问题:mv: fastcopy: write() failed: /Volumes/AIGO/file File too large

当在Mac OSX终端使用mv命令移动大文件时,你可能会遇到"mv: fastcopy: write() failed: /Volumes/AIGO/file File too large"这样的错误。这是因为mv命令在后台使用fastcopy工具来高效移动文件,但fastcopy无法移动超过4GB的文件。

动态生成 README.md 四象限数据: org-ql 查询语法和分组规则

制定要显示的是个区域的 org-ql 查询条件,和 org-supper-agenda 分组规则

在使用 org-ql 导出数据之前,先确定四象限中,需要什么数据,例如,今日要务,一周安排等。再根据 org-ql 语法查询 org 文件中的日程安排,然后,使用 org-supper-agenda 分组的规则,导出自定义视图格式的任务清单,再将组的内容,更新替换到 README.md 文件中,最终达到同步的效果。

借助 org-ql 工具自动导出 agenda 待办任务

需求:在 github 的 README 中显示日常项目状态,显示本周主要的任务,列出项目清单和任务安排。设计:使用 org-ql 查询任务状态,列出项目和代办实现,导出 json 格式。

基于 org-ql-search 实现获取查询,使用 org-ql-view 模板格式化结果数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
(defun build-readme-view (name)
  "Choose and display the `org-ql-views' view NAME.
Interactively, prompt for NAME."
  (let* ((result)
         (view (alist-get name org-ql-views nil nil #'string=))
         )
    (-let* (((&plist :buffers-files :query :sort :narrow :super-groups :title) view)
            (super-groups (cl-typecase super-groups
                            (symbol (symbol-value super-groups))
                            (list super-groups))))
      (message "step 1:+++++++ %s" query)
      (build-readme-search buffers-files query
        :super-groups super-groups :narrow narrow :sort sort :title title
        :buffer org-ql-view-buffer)
      ))
  )

(cl-defun build-readme-search (buffers-files query &key narrow super-groups sort title
                                             (buffer org-ql-view-buffer))
  (declare (indent defun))
  (interactive (list (org-ql-view--complete-buffers-files)
                     (read-string "Query: " (when org-ql-view-query
                                              (format "%S" org-ql-view-query)))
                     :narrow (or org-ql-view-narrow (eq current-prefix-arg '(4)))
                     :super-groups (org-ql-view--complete-super-groups)
                     :sort (org-ql-view--complete-sort)))
  ;; NOTE: Using `with-temp-buffer' is a hack to work around the fact that `make-local-variable'
  ;; does not work reliably from inside a `let' form when the target buffer is current on entry
  ;; to or exit from the `let', even though `make-local-variable' is actually done in
  ;; `org-ql-view--display'.  So we do all this within a temp buffer, which works around it.
  (with-temp-buffer
    (let* ((query (cl-etypecase query
                    (string (if (or (string-prefix-p "(" query)
                                    (string-prefix-p "\"" query))
                                ;; Read sexp query.
                                (read query)
                              ;; Parse non-sexp query into sexp query.
                              (org-ql--query-string-to-sexp query)))
                    (list query)))
           (results (org-ql-select buffers-files query
                      :action 'element-with-markers
                      :narrow narrow
                      :sort sort))
           (strings (-map #'org-ql-view--format-element results))
           (buffer (or buffer (format "%s %s*" org-ql-view-buffer-name-prefix (or title query))))
           (header (org-ql-view--header-line-format
                    :buffers-files buffers-files :query query :title title))
           ;; Bind variables for `org-ql-view--display' to set.
           (org-ql-view-buffers-files buffers-files)
           (org-ql-view-query query)
           (org-ql-view-sort sort)
           (org-ql-view-narrow narrow)
           (org-ql-view-super-groups super-groups)
           (org-ql-view-title title))
      (when super-groups
        (let ((org-super-agenda-groups (cl-etypecase super-groups
                                         (symbol (symbol-value super-groups))
                                         (list super-groups))))
          (setf strings (org-super-agenda--group-items strings))))
      ;;TODO no show view
      ;; insert buffer to coverto build readme
      (message "build readme file:\n %s " (s-join "\n" strings))
      ;; (org-ql-view--display :buffer buffer :header header :string (s-join "\n" strings))
                )))

(build-readme-view "readme")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
build readme file:

  原则
  TODO 诚信原则
  TODO 成长原则
  TODO 自我管理原则

 基于 org-super-agenda 定义 agenda 模板
  TODO 快速导出 agenda 清单模板  9d ago  :@学习笔记:
  TODO 每日安排  :@学习笔记:
  TODO 每周安排  :@学习笔记:

基于 org-ql-select 获取查询结果,自定义 list-to-org 格式化结果内容

借助 org-ql-search 和 org-ql-view 能够实现

制作 Text Generator Plugin 的模板

使用 create Template 命令创建模板

使用此命令,您可以从活动文档创建模板。 默认热键Alt + C

  • 默认情况下,模板将在 local 文件夹中创建 Templates Folder (模板)(您可以随时更改路径)。
  • 模板必须在 Templates Folder 中。

从零开始创建模板

模板元数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
---
PromptInfo:
 promptId: getParagraph
 name: ✍️ Write paragraphs
 description: select a content contiens items, a paragraph for each item will be generated.
 required_values: title, outline
 author: Noureddine
 tags: writing
 version: 0.0.1
 commands:
 - generate
---

PromptInfo 包含有关提示的信息,必须在每个模板的头部。它包含以下字段:

org-ql 查询语句如何解析变量值

再使用 org-ql select 查询语句时,经常遇到通过变量来确定查询条件的情况,当直接将使用 format 等方法,将变量格式化为语句时,真正的查询条件并不执行, org-ql 会先通过 org-ql--normalize-query 方法处理:

介绍 org-ql Queries 语法

org-ql 查询是一个 lisp 表达式,它可以包含任意表达式,也可以调用某些内置谓词 predicates 。 org-ql 被编译成一个谓词函数,该函数在 org 缓冲区中的每个标题上进行点测试;当 non-nil 时,返回匹配到的标题。在可能的情况下,某些内置谓词被优化为全缓冲区正则表达式搜索,这比在每个标题上测试谓词要快得多。

定制 org-super-agenda 视图作为任务调度台

借助 org-super-agenda 加深理解 org-agenda 的功能和用法,通过分组模板养成 review 任务习惯,激发执行力!

  • 学习 org-super-agenda 加强管理,修炼二项限时间管理的工具

    可以结合 org-ql 增强语法的可读性,结合 org-super-agenda 增加定义选择器的效果.

使用 ChatGPT 分析优化 agenda 日程安排

借助 AI 帮助分析日程安排的也将是非常有力的工具。

  1. 如何获取 agenda 的内容,直接返回构建的视图内容字符串,而不跳转到 agenda 缓冲区
    • 通过 org-agenda 内置命令导出文本格式使用自带命令,会跳转到 org-agenda-view 中无法在 elisp 中拿到列表数据
    • 通过 org-ql 查询命令获取 agenda 列表
  2. 将内容投喂给 gptel 获取分析报告和建议借助 org-roam-capture 通过 tag 设定 prompt 角色,在完成 capture 时,自动对话AI。
  3. 优化 prompt 对话模板:
    1. 基于 capture 模板: 内容总结写作助理
    2. 基于 snippet 模板: agd 调用自定义方法,实现查询 org 内容,插入到当前 buffer

使用 org-ql 获取TODO数据实现 AI 对话

获取 org-agenda 的清单数据。在获取到数据之后,就可以为其他自定义方法提供数据支持。

org-super-agenda 语法说明

每个组选择器在 agenda 中创建一个包含它匹配的项的组,并使用这些项;任何与它不匹配的项都被传递给下一个组选择器。选择器 :discard 是一个例外:它在不创建 agenda 组的情况下持有它匹配的所有项,并将其余项传递给下一个选择器。

gptel 的 api 是如何插入到当前 buffer

模拟curl 方式请求slack Api,需要参考的逻辑有

  1. 先定位入口,跟踪代码
  2. 定位到 gptel-curl 实现类主要功能都在这里,需要在这里找到解决方案先分析该类的主要功能
    1. 参数内容的收集 gptel-curl--get-args
    2. 以进程的方式开始 curl 请求数据开启进程 gptel-curl-get-response
    3. 处理数据:以流的方式插入到当前 buffer
  3. 需要流式响应功能支持,socket模式 Socket Mode implementation | Slack

gptel 入口 gptel-request 方法介绍

理解源码,分析入口参数和环境变量初始状态,以及后续功能方法的处理逻辑