Git Product home page Git Product logo

emacs-config's Introduction

emacs学习记录

文档整理

链接说明

git 操作

使.gitignore生效

~/.emacs.d $ git add .gitignore #添加对.gitignore的修改
~/.emacs.d $ git rm -r –-cached . #清除缓存
~/.emacs.d $ git rm [要删除的文件或目录] #这一步可以把已经提交过的文件删除
~/.emacs.d $ git add . #重新按照ignore的规则add所有的文件
~/.emacs.d $ git commit -m “update .gitignore” #提交和注释

如果你需要从 Git 仓库中批量删除很多文件,并且这些文件都已经被添加到 .gitignore 文件中,你可以使用 git clean 命令结合一些选项来执行。 /注意/,=git clean= 是一个危险的命令,因为它会删除你工作目录中未被追踪的文件。确保你知道你在做什么,或者至少确保你的重要文件都已经被备份。

具体步骤

  1. 使用 -n 选项先做一次模拟运行,查看哪些文件将被删除:
    git clean -n -X
        

    这里,=-n= 是做一次模拟运行,=-X= 是删除所有已被 .gitignore 文件忽略的文件。

  2. 如果你确认要删除这些文件,可以使用 -f 选项来执行删除:
    git clean -f -X
        

    再次,注意这会永久删除这些文件,确保你已经备份了你的重要数据。

  3. 提交这个更改:
    git commit -am "Remove ignored files"
        
  4. 将更改推送到远端仓库:
    git push origin master
        

    master 替换为你当前使用的分支名。

设置tag

git tag [tagName]   # 创建tag, 名称为tagName
git push origin [tagName] #推送到远端仓库

chatgpt

如何配置 chatgpt

chatgpt3.5

chtgpt4

  1. 教程:2023年9月份ChatGPT Plus最新充值方法
  2. 网站:https://www.i4store.net
  3. 信息:
    card4674130088847175
    Address1201 Meadow Drive
    Citylivingston
    Postal code59047
    StateMontana
    code738
    01/2029

open-api-key

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

Emacs 工作流建设

  1. 以项目为单位进行管理
  2. 不拘泥于项目 比如配置在~/.emacs.d目录下,agenda-files 在~/gtd目录下,比如我修改了~/.emacs.d/lisp/init-org.el 中的 agenda配置,同时想修改 ~/gtd/diary.org文件,这时候就可以在一个工作区中同时打开不同项目中的文件, 增加灵活性。
  3. 设置标记点,方便跳转 当我们需要在多文件中频繁跳转时,可以采取此法来,随时跳会标记点,尤其在不同项目文件中跳转时很方便。 bookmark-set / bookmark-jump

org 操作

手册

  1. The Org Manual
  2. aa

基本操作

  1. 使用*设置标题级别
  2. 设置任务状态: C-c C-t org-todo
  3. 设置check boxes
  4. 设置结束时间: C-c C-d org-deadline
  5. 换行(格式同上一行):org-mata-return
  6. 设置logbook
操作名指令快捷键detail
插入同级标题org-insert-heading-respect-contentC-RETorg-ins
插入次级标题org-insert-subheading
标题降级org-metaleftM-<left>
标题升级org-metarightM-<right>
标题树降级org-demote-subtreeC-c C->
标题树升级org-promote-subtreeC-c C-<

org 特殊字符表示

字符表示法
竖线|

org-agenda操作

  1. 设置持续时间(格式: 00:xx): e org-agenda-set-effort
  2. 过滤持续时间: _ org-agenda-filter-by-effort
  3. 设置tag: : org-agenda-set-tags
操作名指令快捷键
org-agenda-week-vieww

表格操作

一定一定要学会使用表格,表格更加直观,可以在表格中增加链接,链接到详细说明处。 如果使用evil-mode,可能有些快捷键不起作用,但是指令还是可以使用

操作名指令快捷键备注其他
基础操作创建表格org-table-createC-c |可以指定表格大小比如 4x3
遍历表格org-cycleTAB
反向遍历org-shiftabS-TAB
插入行org-table-insert-rowRET
插入分隔行org-table-insert-hlineC-c -org-ctrl-c-minus
插入列org-table-insert-column
整行上移org-metaupM-<up>up为向向上键
整行下移org-metadownM-<down>
整列左移org-metaleftM-<left>
整列右移org-metarightM-<right>
当前内容下移org-meta-returnM-RET
进阶操作插入静态时间戳org-time-stamp-inactiveC-c !时间戳不会改变
插入动态时间戳org-time-stampC-c .
折叠列org-ctrl-c-tabC-c TAB
删除列org-table-delete-column

链接操作

操作名指令快捷键备注
创建链接org-insert-linkC-c C-l可以直接按照格式写
展开链接org-toggle-link-display
跳转到链接org-open-at-pointC-c C-o
补全completion-at-point[[*]特殊操作

文件链接

我第一次想用链接,是在使用表格的时候,表格的有点是直观,缺点就是可容纳信息较少,所以我想着,把 复杂的内容单独写在一个headline中,在增加一个链接方便跳转。 网上的资料大都不太全,所以最终还是找到官方文档:

  1. https://orgmode.org/manual/Link-Format.html
  2. https://orgmode.org/manual/Internal-Links.html
  3. https://orgmode.org/manual/Search-Options.html

如果从来没用用过 org-mode 的 Hyperlinks可以先看第一篇文章。 简单来说链接其实就是特殊的纯文本:

[[LINK][DESCRIPTION]]

举例:
1. [[http://www.baidu.com][这个链接会指向百度]]
2. [[file::~/code/main.cc][这个链接指向一个本地文件]]

“LINK” 表示链接内容, DESCRIPTION 为用来展示的名字, 跳转是通过指令org-open-at-point。

紧接着第二篇文章,就讲了内部链接,我没太看懂,而且实践也没有成功。(补充:重启之后成功了) 这里简单总结一下,说不定以后就能明白了:

主要格式为以下三种
1. [[#my-custom-id]]
2. [[*some section]]
3. [[target]] 

三种格式, my-custom-id应该是一种特定的id,但是我不知道怎么设置

*some section 就是指一个标题(headline),文章里还提到了一种简单写法,即先写括号和星号,然后按 M-TAB, 所有的标题就会出现在一个 buffer 中,然后选择想要的即可。 原文: To insert a link targeting a headline, in-buffer completion can be used. Just type a star followed by a few optional letters into the buffer and press M-TAB. All headlines in the current buffer are offered as completions.

第三种格式,target 即表示一个标记,只要在两个尖括号你的内容都可以是一个标记

比如这篇文章有如下两行:
<<这是一个标记>>
[[这是一个标记]]  那么这个链接就会跳到上面那一行

但是我没有成功过。

第三篇文章讲的是文件链接,其实内部链接也是文件链接的一种,我尝试了一下,确实可行。

举例:
[[file:~/code/main.c::255]]
[[file:~/xx.org::My Target]]
[[file:~/xx.org::*My Target]]
[[file:~/xx.org::#my-custom-id]]
[[file:~/xx.org::/regexp/]]
[[attachment:main.c::255]]

主要是多了一个file前缀,应该很好理解,那么我想链接到当前文件的某个标题可以这样:

* headline1
** 1.1
** 1.2
** 这是 1.3
* headline2
** 2.1

[[file:::1.1]]  这个会跳转到  "标题1.1"
[[file:::这是 1.3]] 这个会跳转到标题 "这是 1.3"

最终发现其实很简单,不过目前也只会跳转到标题,其他的花里胡哨的功能还不会

task & subtask & checkbox

通用操作

操作指令快捷键
类型变更org-shiftleftS-<left>
org-shifupS-<up>
计算org-ctrl-c-ctrl-cC-c C-c
变更 checkboxorg-toggle-checkboxC-c C-c
插入checkboxorg-insert-todo-headingM-S-RET

用hugo写博客

安装 hugo + even主题

emacs 安装 ox-hugo

  1. https://github.com/kaushalmodi/ox-hugo
  2. org 转换成 markdown, author设置

lsp代码补全

lsp简介

eglot

Emacs UI 配置

字体配置

下载字体

Nerd Fonts 是一个使用大量字体图标来解决程序员在开发过程中缺少合适字体的问题的项目。它可以从流行的字体图标库中将大量外部字体引入待开发的项目中,它支持的字体图标库包括 Font Awesome , Devicons , Octicons , and others。 仓库:https://github.com/ryanoasis/nerd-fonts 下载字体基本步骤:

  1. 下载 ttf文件,比如FiraCodettf字体链接
  2. 直接点击 ttf 文件进行安装,ttf 可以理解为一个字体安装包,打开根据提示一路点击确定就行
  3. 打开 Emacs 进行配置

Eamcs 中配置字体

;; 方法1: 通过指令设置字体,
;; FiraCode Nerd 为字体名
;; 13 为字体大小
(set-frame-font "FiraCode Nerd Font 13" nil t)

;; 方法2: 使用第三方插件配置字体
(use-package cnfonts
  :init (cnfonts-mode 1)
  ;; 添加两个字号增大缩小的快捷键
  :bind
  (:map cnfonts-mode-map
        ("C--" . cnfonts-decrease-fontsize)
        ("C-=" . cnfonts-increase-fontsize)

        ))

(setq cnfonts-personal-fontnames '(;; 英文字体
                                   ("FiraCode Nerd Font" "Source Code Pro for Powerline")
                                   ;; 中文字体
                                   ("行楷-简" "行楷-繁")
                                   ))

我这里推荐使用cnfonts,cnfonts 原来叫: chinese-fonts-setup, 是一个 Emacs 中英文字体配置工具。 可以比较方便地实现中文字体和英文字体等宽(也就是大家常说的中英 文对齐)。 我一开始是使用 org-table ,发现同时有中英文时,表格无法对齐,就开始使用 cnfonts了。 接着上文说, 字体下载好后,

  1. 通过 use-package 安装 cnfonts
  2. 设置cnfonts-personal-fontnames, 将刚刚下载的字体名添加进去
  3. M-x cnfonts-edit-profile , 打开配置界面, 随便点点,很容易配置的。

    pictures/2023-10-21_11-18-47_screenshot.jpg

  4. 配置完毕,直接关闭 buffer 就行。

颜色配置

显示颜色

rainbow-mode 是一个有用的包,能够在 Emacs 中直接显示颜色代码的颜色。 以下是如何使用 use-package 来下载和配置 rainbow-mode:

(use-package rainbow-mode
  :ensure t
  :hook (prog-mode . rainbow-mode))

基础颜色配置

Emacs 允许用户自定义界面的颜色,包括背景色、前景色以及文本和语法高亮的颜色。以下是一些基本的配置方法:

  1. 设置背景和前景色
    (set-background-color "#000000")
    (set-foreground-color "#FFFFFF")
        
  2. 配置语法高亮的颜色 我们也可以通过自定义 face 来设置语法高亮的颜色。
    (custom-set-faces
     '(font-lock-comment-face ((t (:foreground "#FF0000")))))
        

Org mode 中的特殊格式颜色配置

在 Org mode 中,我们经常需要使用加粗、斜体、删除线等格式。我们可以自定义这些格式的颜色以达到更好的视觉效果。

以下是一些例子:

  1. 自定义加粗文本的颜色
    (custom-set-faces
     '(org-bold ((t (:foreground "#FF0000" :weight bold)))))
        
  2. 自定义斜体文本的颜色
    (custom-set-faces
     '(org-italic ((t (:foreground "#00FF00" :slant italic)))))
        
  3. 自定义删除线文本的颜色
    (custom-set-faces
     '(org-headline-done ((t (:foreground "#CCCCCC" :strike-through t)))))
        

启动界面

emacs-dashboard

Emacs 包管理

use-package 进行包管理

基本用法

从 github下载包

(use-package quelpa)

(unless (package-installed-p 'quelpa-use-package)
  (quelpa
   '(quelpa-use-package
     :fetcher git
     :url "https://github.com/quelpa/quelpa-use-package.git")))

(use-package quelpa-use-package
  :init
  (setq quelpa-use-package-inhibit-loading-quelpa t)
  :demand t)

Emacs 启动配置

  1. 使用 EmacsServer 我这里写了一个 shell 脚本
    #!/bin/zsh
    export PATH=$PATH:/usr/local/bin
    
    
    # 尝试使用 emacsclient 连接到 Emacs server
    if ! emacsclient -e "(if (server-running-p) 't 'nil)"; then
        # 否则,首先启动 Emacs server
        emacs --daemon
    fi
    
    # 判断是否传递了文件名参数
    if [ $# -eq 0 ]; then
        emacsclient -c -e '(switch-to-buffer "*scratch*")'
        exit 0
    else
        emacsclient -c "$@"
    fi
        

Emacs 启动优化

detail

org-insert-heading-respect-content

这个指令会插入同级标题,会往上找到距离当前光标最近的标题,然后插入同级标题。 大家可以自行尝试,在文章的一级/二级/ 三级标题处,正文处分别按下C-RET 快捷键盘看看效果。

org-shiftleft

这个指令针对不同的内容会有不同的表现效果

  1. 标题:TODO -> DONE
  2. checklist: 样式变更
  3. 时间戳:更新时间戳

emacs-config's People

Watchers

MQD avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.