Emacs 快速入门

免费获取船舶轨迹数据?手把手教你用Python处理中国海洋卫星AIS数据 本文详细介绍了如何免费获取中国海洋卫星AIS数据,并使用Python进行船舶轨迹数据的处理与分析。从数据源评估到自动化处理流水线,再到高级分析与可视化技巧,手把手教你避开常见问题,实现高效数据处理。特别适合航运数据分析、物流优化和海上安全研究等领域的研究者和开发者。 阅读详情
Emacs 启动:
直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本,
就用 emacs -nw   (No windows)起动.

符号说明
C-X 表示按住CTRL键, 然后按X, 再把CTRL, X一起放开.
M-X     META         META

在没有META键的电脑上, M-X 等于先按 ESC键, 接著按 X键.
Sun上面META键就是菱形的那个键.
有些系统META键就是ALT键.(或者某一边的ALT键)

C-X或 M-X的X没有大小写分别.

Emacs按键命令基本上是一串C-<chr>和M-<chr>组成的.
超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什么.
这一行叫作mini buffer

结束Emacs按 C-x C-c

取消执行 C-g
有些Emacs命令会跑很久, 可以用C-g中断之. 按错键也可以按C-g取消.

上下移动  C-p 向上 (previous line) C-n 向下(next line)
左右移动  C-f 向右 (forward)    C-b 向左 (backward)

  其实Emacs内部没有行的概念, 把一篇文章放在一个大buffer
  里面, 所以C-f (forward)就是向档尾移动, C-b (backward)
  是移回去的意思, 一次一个字.

翻页 下一页 C-v (view next screen)
   上一页 M-v

  翻页时,上一页末尾会留一点在萤幕最上面,以维持连续性.

Emacs在游标接近萤幕最下方时会自动跳半页, 把档案往前挪一点,
方便阅读.

重画萤幕 C-L

Emacs里面游标的专有名词叫point. point == 游标目前的 点

游标一次跳一个字(word) M-f 往后跳 M-b

 注意 C-f 与 M-f, C-b 与 M-b的对称性.

移到行头 C-a 行尾 C-e
移到句首 M-a 到句尾 M-e
 (M-a 到上一个句点后面,一个句子的起头.
  M-e 到句点后面)

移到档头 M-< 档尾 M->

删除游标目前指的/后面的字 C-d
    前面的字 DEL (Delete键)
DEL的正名叫Rubout (Rub out)

M-DEL 往回删一个字(word)
M-d  往前删 (游标后面)
C-k  删至行尾 (kill)
M-k  删到一句子结尾(删到句点) (kill)


注意Backspace = C-h 在Emacs下是help的意思
后面有(kill)的, 表示此删除的动作是kill, 不太等于delete.
emacs会把kill掉的东西放到kill ring去, 算是一种暂存的地方,
以后可以叫出来.见 yank说明.


Undo: C-x u
C-_ 等于 C-x u  有些DEC终端机, C-/就是C-_
         有时等于C-Shift- -

重复执行

举例, 向右移 8个字, C-u 8 C-f
C-u 在Emacs里是蛮特别的,用来设定一些引数(argument/repeat count)
给其后的命令.

C-u 2 0 C-n 向下移 20行

有一个特别的例外, C-u 3 C-v 不是翻三页, 而是整个萤幕向上移三行.
据说这比较有意义.

C-u 1 0 C-x u  UNDO 10次

给C-L一个引数会怎么样:
C-u 0 C-l 会重画萤幕,并且把目前的行移到萤幕第一行.

另外, C-u 100  等于 M-100
   C-u 数字 等于 M-数字

X windows 下,
C-left C-right 一次移一个字(word).
C-up C-down 移动一段 (paragraphs/C语言的话是block)
Home = C-a
End = C-e
C-Home = M-<
C-end = M->
PgUp PgDn = M-v C-v
设定重覆次数更加简单,
比如要向右移10个字 C-1 C-0 right-arrow
 就是按住CTRL, 然后打10就对了, 比 C-u 1 0 简单.

Mouse中键用来选取有hi-light的地方.
   右键是menu-button

如果不小心按两次ESC, 等于 M-ESC, 会有一个讯息跑出来
说你按到一个被disable的命令. 这是高级指令, 作者认为
初学者用不道,所以会问你要不要启动它, 一般回答no.

如果某一行太长, 萤幕显示不下, Emacs会在萤幕最右边打个$,
表示此行未完,右边还有.

把一行拆成两行: 在想拆处按Enter即可.
合并两行为一行: 在行尾按C-d (或行首按DEL)

Yank: 吐出被删掉的(killed)东西.

只要用kill (C-k, M-k等) 删除, 超过一个字的资料,
emacs就会把它存起来, 然后C-y 可以把它叫出来.
功能跟Cut & Paste一样. Kill 和delete不一样, 只有被
kill掉的东西才能用yank吐回来.

游标在同一地方不动, 连续kill掉的资料会被当成一次kill掉的,
yank时会一起回来.

被Kill掉的资料是放在称作 kill ring的资料结构上面, ring就是个圆圈,
被kill掉的东西会依序摆在圆圈上. yank 会放回最近一次kill掉的资料.
如果不是你想要的话, 用M-y 可以换. (M-y就是告诉emacs, 不对不对,
我不是要这一个,换前一个给我).

M-y 要紧接在C-y之后.

拷贝文字的方法== 连续 C-k 几次, 把要拷贝的行全部删掉,
然后按 C-y 弄回来. 再到想复制的地方按一次C-y, 就成了.

把要拷贝的资料kill掉在yank回来好像很笨. 是有比较文明的
方法, 那就是M-w, 不过较麻烦.

首先,要先设标记. Mark 用 C-SPC 或 C-@ 设. 然候
把游标移到另一端, 按 M-w 就可以把 mark 到 point间的
字存到kill ring上. point 就是游标的意思.

Emacs不会把Mark起来的地方用highlight表示, 除非在X下.
在X下, 可以用M-w 来拷贝用滑鼠反白的文字.

kill & yank 就是 cut & paste的意思.


以上大部份指令对Bash的命令列编辑也有效

档案操作
读档: Emacs术语叫 finding a file.
C-x C-f 然后在mini-buffer输入档名. 输入档名时, SPC键有
auto-complete的功能,或者会秀出到目前为止档名前几
个字和输入一样的. (TAB键也有类似功能)

C-x C-f 叫 find-file

C-x C-s 存档 (save current file, save current buffer)
C-x s  存所有的档

C-x i  插入档案 把另外的档案的内容读入目前编辑区内
 
视窗

Emacs把档案读进来,存在buffer中.
我们透过window来看/编辑buffer.

两个视窗会把萤幕切成两部份, 他们可以同时显示
相同的, 或不同的档案.

对初学者而言, 最需要的是记住怎样让不想要的视窗消失:

C-x 0 关掉目前的视窗
C-x 1 会让目前的视窗占满整个萤幕 (One Window),
   取消/关掉其他的视窗.

Emacs里面有许多功能都会开一个小视窗来和使用者沟通, 显示讯息.
有时候不会自动消失很讨厌, C-x 1 就很有用.

另一个功能是如何跳到另一个视窗.
C-x o (other-window)


C-x 2 把目前的视窗切成两个 (水平分割)
C-x 3           (垂直分割)
C-x 4 是一串与视窗有关的指令.
C-x 5 则是扩展到X的视窗, 称为frame.
   C-x 5 2 就是再开另一个X视窗 (frame).


多档编辑
C-x C-b 看目前有那些buffer (buffer就是emacs放开起的档案的地方).
C-x b 然后在minibuffer输入buffer的名字,可以切换编辑buffer.
   TAB键也有作用. 有些内部的buffer (就是没有档案的buffer),
   是用*开头和结束, 这个也要打, 如*scratch*

最后提醒:
 C-x 1 可以把多余的视窗关掉.


Emacs扩充指令

前面介绍的emacs按键大部份都是C-<chr> 或者 M-<chr>的形式.
这是最简单的按法, 由一对按键构成一个指令.

Emacs的按键可以超过2个以上. 如 C-x 1 或 C-x C-b.
一般超过一个按键组合的命令都是用C-x 开头.

另外你也可以直接下命令. 按 M-x 之后就可以打一个Emacs命
令来执行. 一般这些命令名字都很长, 不过都不常用. 等一下
我们会介绍一些. 还有介绍怎么把这些命令设成按键指令.

C-x C-c 就是结束Emacs. 不过一般Emacs很笨重, 一旦起动就不轻易
退出. 所以比较常用的是C-z

C-z 把Emacs暂停, 回到命令列. 当你下次再需要编辑时,打fg %emacs或者fg
就可以把Emacs唤醒.

在X下, C-z会把emacs缩成icon


mode line

emacs编辑画面由 编辑区(buffer) 状态列 (modeline) 和对话区 (minibuffer)
构成. 这里解释 modeline 显示的讯息.

以下是个范例:

  --**-XEmacs: xemacs.qs   (Fundamental)----74%-------

由后面往前解释, 74% 表示游标的位置.

(Fundamental)表示编辑模式.这是最原始的模式. 编辑不同种类的文章
可能希望用不同的模式, 比如说C-mode, lisp-mode, tex-mode, text-mode
等等. 在不同模式下可能多一些按键出来. 举例text-mode.
   M-x text-mode
可以切入text-mode, 这是一般人编辑文字使用的模式. 和Fundamental mode
没什么差异. 不过游标移动时, Emacs对一个字的定义就有所不同, 因而
M-f M-b 等移动一个字, 一个段落的指令就可能会停在标点符号的前面.
此时状态列变为... (Text)----70%---

以上说的是Major mode. 另外还有minor mode, 其实就是一些额外的功能.
比如说, M-x auto-fill-mode 则状态列显示 (Text Fill).
auto-fill就是自动断行, 让文章每行固定有70个字.

M-X fundamental-mode 可以变回来.

这里要说明一下, emacs在 minibuffer下有auto-completion的功能,
也就是打M-x fund 然后按 SPC, 它会自动补全 fundamental-mode,
不用全打. 如果有两个以上的选择, 它会告诉你. 这个功能对
find-file (C-x C-f)等等档案编辑功能也有效. 前面提过.
另外, minibuffer下面M-n和 M-p 可以取回上次呼叫的命令.

最后解释两个**号. 右边的*表示文章被修改过了.
左边的* 表示这个编辑区(buffer)可以修改.
有一些emacs的buffer是read-only buffer, 就会标成%
%%表示档案是read-only.

C-x C-q 可以解开read-only的锁定, 无论如何你要改这个编辑区.
这是个toggle指令, 如果原来是可以修改的, C-x C-q会把它切成
read-only.


Search

没有Search 功能的编辑器简直就是小朋友的玩具. Search
是一项很重要的功能, 所以emacs也提供的很完善.
C-s
C-r
M-x re-search-forward
M-x re-search-backward
M-x search-forward
M-x search-backward

以上这些指令是基本的search指令. C-s, C-r是increamental search,
就是你打字的同时, emacs就直接帮你找. 一个是forward, 一个是backward.
找到了怎么办? 按C-g可以取消搜寻, 跳回原来的位置. 按Enter就让游标
停在找到的地方 -- 此时minibuffer显示:Mark saved where search started
什么意思? 就是isearch帮你在原来的位置设了一个mark, 然后把point
(cursor) 移到新的位置.
想跳回去原先的地方?
C-x C-x 就可以了.(exchange-point-and-mark)
C-u C-SPC 可以依序跳回前几次设mark的地方.
 (C-SPC是设mark, 给它一个argument, 就是反动作)
 (还记不记得C-u 可以给后面的指令设一些参数.
  有些指令拿这个参数来当作repeat count,
  有些指令就只拿来当作on/off, true/false, set/clear而已)

M-x re-search-forward可以让你用regular expression搜寻.
M-x search-forward则没有increamental的功能.

另外一个指令, 作用和grep很像:
M-x occure

和search相提并论的就是replace.

M-x replace 然后按 SPC, 就知道了.

Emacs的设定:

Emacs的设定档是 $HOME/.emacs
你应该多少知道, emacs是用lisp写成的编辑器, .emacs档也都是
要用lisp的语法设定. emacs用的lisp称为elisp, 和一般的lisp差一点点.

有一个info page, emacs-lisp-intro, 深入浅出的介绍emacs lisp.
如果你还不会, 不懂programming, 强烈建议你看这份文件. 如果你
会texinfo, 你可以把它很漂亮的印出来. (内容一点点而已, 两三
天就看完了)

如果你把.emacs搞砸了, 进emacs很奇怪, 怎么办?
1. 用 vi 改 .emacs :>
2. emacs -q 进 emacs


Major Modes

一般常见的emacs major mode有
  fundamental-mode
  text-mode
  lisp-mode  有自动对括号/重排, 直接执行lisp code功能.
  c-mode/cc-mode c-mode是比较旧的c-mode, cc-mode应该是
        目前新的c-mode. 有自动重排/对括号的功能.
        也可以在emacs内compile, 跳到compiler error
        修正错误. 执行程式时debug. (配合dbx/gdb)
        compile是透过Makefile进行.
  tex-mode  Tex/Latex编辑模示. 可能是打一些奇怪的标点
        符号比较方便.
  <programming-language>-mode
        同lisp/cc-mode. 如果是interpreter的话,
        emacs通常都可以直接执行/debug.
  <programming-language>-mode还有tags的功能, 后述.

  html-mode, texinfo-mode, sgml-mode: 编写html, texi, sgml之用.
  w3-mode   WWW browser. 在x-win上不满意,但可以接受...


Tags

Tags 是一个显为人知的功能? 所以我想提一下. 这不是emacs发明的,
而是vi 原本的特异功能. emacs只是发扬光大而已.

假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码,
放在 ~/tin-1.3beta 下面. 你想看它们.

首先, 叫emacs cd到该目录:
  M-x cd

然后, 建立tag table.
tag table 就是一张对照表, 记录哪个符号(variable/function call)
对映到哪个档案的哪个地方. 有这张表, emacs可以让我们快速的在程
式码内游走. 一般这张表是一个档案, 叫作TAGS (大写)

  M-! etags *.[ch]

M-! 是执行external shell command的意思. etags就是emacs的建表程式.
你只要告诉它你的source code在那里即可.

vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为
我们介绍emacs, 所以不管它.

然后, 怎么看程式? 你知道所有的C 程式都是由main()开始, 所以你想
找到main()在哪个档案. 这时只要按 M-. 然后emacs会问你tag table
在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然后输入main,
emacs就会把你带到main(){ ... }去.

如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标
移到该函式的名字上, M-. ENTER 就搞定了.

如果 emacs找错了 (比如有变数和函式同名, emacs跳到变数去),
那你可以用 C-u M-. 找下一个.

在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个.
在其它地方也有效.

Emacs的一些package:

M-x dired (或C-x d)
     游走/编辑 目录, 就是档案总管的意思

M-x man  就是man page
M-x shell 开个command prompt, 不过不能跑vi,elm, tin...
M-x gnus 读新闻/读信
M-x rmail 读信
M-x vm  view mail
M-x mh-rmail 读信 (package mh-e)
M-x mh-smail 送信 (package mh-e)

强列建议改用emacs读news/bbs. 世界会更美好!

读信的话就要看你的感觉. 这些读信程式都会把信从系统的mail folder
搬到自己的目录下, 占用quota, 我不喜欢 建议elm或mutt.
除非参加mailling list配合procmail. 不然不实用.
用mh-e 须要装mh 这个外部程式, 不太好. 建议vm 或 gnus.

如果你的资料用rcs/sccs作版本管理, emacs自动会起动version control
(minor mode.), c-x c-q 变成check-in/check-out.

如何取得更多的资讯:

Emacs的lisp 经过多年的发展,已成为完整的self-documenting系统.
很多东西都可以线上找到你要的资讯.

前面说过,或者你已经不小心按backspace遇到了, C-h (就是backspace
的ascii码) 在emacs里面是help的意思, 它可以带出一串指令.
常用的有:

  C-h F  Emacs FAQ
  C-h t  Emacs Tutorial
  C-h n  Emacs NEWS file, 介绍最近改版的新功能
  C-h i  Info system. Info是gnu用来取代man page的系统,
      基本上和文字模示的WWW差不多. 有许多重要的资讯
      可以在这边找到. 如果你是新手, 建议你在x-win下
      看. 不然, 按键 m (menuitem), SPC next page
      l (last node: node就是章节的意思) u (up node)
      d (directory, 索引). BS (Backspace, back a page).
      如果全部只按SPC, 就跟man 一样.
  C-h k  describe key, 告诉你按这个键执行那个lisp function.
  C-h f  describe function. 告诉你function在作什么.
      如果只按SPC, emacs会给你所有lisp 函数的列表, 和说明.
  C-h v  describe variable 同function.
  C-h a  apropos的意思(approximate). 给lisp function的部份
      字串, emacs帮你找.
  C-h b  列出目前所有的keybinding
  C-h m  mode help. 列出目前的mode的特殊说明.
  C-c C-h 列出以C-c 开头的所有key-binding. 虽然说Emacs
      可以定义按键, 可是Ctrl- 开头的所有组合大概都用光了,
      只有C-c算是可以自定指令. 不过有些mode也侵犯这个空间.
      目前的convention是C-c <chr> 留给user, C-c C-<chr>
      留给package.

有以上这些help, 你的emacs/elisp功力会随著时间成长.


Elisp 简介:

Emacs有三份手册.第一份是使用手册, 第二份是Elisp 手册, 第三份是
Elisp 简介. 第三份的程度是入门级, 值得看. Elisp手册其实也写的
很简单, 还教你lisp, 不过有点长, 适合参考.

因为我lisp没有仔细学过, 所以:
以下所言, 如有巧合, 那才是真的.

Basic data type
 字串 (string) "Hello, World"
 字元 (char) ?a        ; 问号开头
 atom & list:
   (1 2 3 4) 是一个list, 由 4个 atom 组成.
 pair: 中间是句点.
   (apple . 2)  
 alist (associated list)
   就是一堆 pair的集合,就像perl/tcl的associative array.
   或者说是一个资料库, 一堆 (key, value) pair.
   '((Apple   . 1)
    (Orange  . 2)
    (PineApple . 3))
 vector (?)
   emacs 19用vector 来表示按键(key strok sequence)
   [f1] [f2] [f1 a]

 nil 就是空的list, 或者表示 false
 t  true
Forms
 我们写程式最好有样版让我们填空最简单了.
 Form 就是样版, 不过意义不太一样.
 Form 就是Elisp 可以接受的句型.
 lisp 解译器 预设是对list的每个元素求值(evaluate),
 除非是 special form, 有特殊的定义. 比如说

 (defun FUNC (ARG-LIST)
   BODY ...)

 就是一个special form, 用来定义函式, 所以FUNC 不会被
 求值, 被当成symbol, ...

 (quote (LIST))

 这也是个special form, 叫 lisp 把 (LIST)当做symbol就好了,
 不要 evaluate.

 quote 很常用, 所以有个缩写:
 '(LIST) 等于 (quote (LIST))
 'Asymbol 可以表示一个Atom, 名称叫Asymbol

 set 可以产生/定义新的变数.
 (set 'hello 1)
 ; hello = 1 
 ; 注意我们用 'hello, 所以lisp不会evaluate hello的值.

 这家伙很常用, 也有简写.
 (setq hello 1)
 setq 就是set quote 的缩写. 这是个 special form, 不会对
 第二个元素求值.
 
Evaluation

在Emacs下, C-x C-e 可以执行(evaluate, 求值)游标左边的叙述.
结果会出现在minibuffer.

lisp-interaction-mode中 C-j 可以evaluate, 并且把结果append到 buffer.

lisp 程式由一堆list 构成.称为expression.
每个expression 都回传回一个值.
有些expression有副作用, 如删掉一个字.
 (这跟C 的int delete_char() 意思一样, 它传回int,
  并且删掉某个char)

定义函式:

(defun NAME (ARGS-LIST)
   "注解"         ; optional
   (interactive)      ; optional
   BODY)

定义一个叫NAME的函式. BODY 是一堆expression.
注解是用来给C-h f显示的.
(interactive) 表示这个函示会和user/buffer作用.
(interactive "B") 表示执行此函式先问user一个buffer的名字,
       然后当作参数传给它. (如, 当user透过key-binding
       或者 M-x 呼叫此函式时)
(interactive "BAppend to buffer: /nr")
       问user buffer name时, 提示号 Append to buffer:
       此function有两个引数,第一个是B, 就是buffer
       第二个是r, region
       用/n 隔开.
(interactive "p") 用C-u 设的prefix 把它当作参数传给我.
         预设值==4. C-u C-f 向右移四个字

一些lisp 函式:

(list 1 2 3 4)  产生 '(1 2 3 4)
(car '(1 2 3 4)    1
(cdr '(1 2 3 4)    '(2 3 4)
(cons 1 '(2 3 4))   '(1 2 3 4)
(cons 1 2)      (1 . 2)
(cons 0 (cons 1 (cons 2 nil)))
        等于 '(0 1 2)
   {list 是用 pair 串起来的,
    用C 表示:
      pair: {Object *first, Object *second};
      *(pair[i].first) == i;
      pair[i].second == pair[i+1]; }

(cons '(1 2) '(3 4)) '((1 2) 3 4)
(setq a 1)
(1+ a)    ; a+1
(+ 2 a)    ; a+2
(* 1 2 3 4) 
(current-buffer) ; 传回目前buffer的资料物件
(switch-to-buffer (other-buffer))
(set-buffer)
(buffer-size)
(setq current-pos (point))
(point-min)
(point-max)
(message "Hello")  ; 在minibuffer显示Hello
(if (test)
   (then-part)
   (else-part))
(cond ((test1) BODY1)
   ((test2) BODY2)
   (t OTHER-WISE)
(let ((var1 value) ; local variable
    var2       ; no value
    (var3 value)
    ...)
    BODY ...)
(lambda (ARG-LIST) ...) 同 defun, 但是没有名字 (anonymous).
可以存到变数去:
(setq hello (lambda () (message "Hello,World")))
(funcall hello)
(goto-char (point-max))
(defvar VAR VALUE "*注解") 如果VAR 不存在才定义. 有注解可以用
  C-h v 看. 注解打*号表是使用者可以直接改/ 这个变数本来就是
       给使用者设定用的.
       可以用 M-x edit-options 来线上设定 (emacs结束就没有了,
       不过edit-options可以给你所有可修改的变数的列表,你可以
       放到.emacs档内.

(directory-files "./" t "//..*")
     return a list of files under directory X
(load "xxxx.el") 同#include <stdio.h>
(setq load-path (cons "~/emacs" load-path)) ; load的search path.
(autoload ...) 不像load会直接evaluate 整个档案, 而是需要时再
        load.
(local-unset-key [(control c)])
(local-set-key [(control c) a] 'forward-sexp)
sexp 就是一个expession, n个expression如果用括号括起来就算一个.
   (expression的定义随语言的不同而有不同, 在C, lisp
    tex, html, fortran 下皆有差异)
Ubuntu24.04安装搜狗输入法详细教程 本章教程,介绍如何在Ubuntu24.04版本操作系统上安装搜狗输入法。 阅读详情

相关推荐

未隔离电源设备使用usb转串口调试导致串口模块爆炸烧坏事故记录

这个事就发生在前两天,我们公司的wifi模块被客户用到了咖啡机上,客户寄了一台整机给我们协助调试,还送了几包咖啡豆,本想着还能打个咖啡喝一喝的,但就在咖啡机刚寄过来第一天,就出事了。而这个事故的发生,竟然仅仅是因为同事接了个串口模块到电脑调试打印导致的。谁也想不到,这个3.3V的供电的wifi模块居然还有这么大的威力。直接将usb转TTL串口模块的转换芯片给爆开了,咖啡机也给弄坏了,据同事描述当时情况就只见到一片火光和一声巨响,状况比较惨烈,所幸的是笔记本电脑没有烧坏,但是直接给崩蓝屏了。 ...

fangye945a的博客 6192

Emacs学习笔记(7):简单的配置

继续Emacs学习计划。这是“初学者”阶段的最后一篇。完成本节的内容,就可以向“中级计划”进军了 : ) 经过一段时间的使用,已经大体适应了Emacs的快捷键,不过还是要参考命令备忘表。 Emacser通常要对Emacs进行定制,使用起来才会爽。据说Vimer嘲笑Emacser的一个理由就是: Emacser如果丢了配置文件就什么都干不了。 好吧好吧,这些争论和我没什么关...

weixin_30756499的博客 926

西门子SCL出栈入栈算法(附带源码)

栈是一种数据结构,它的特点是数据后入先出(Last In First Out,LIFO)或者说是先入后出,意思是一样的。栈有三个基本动作:初始化、入栈和出栈。接下来给大家介绍下我使用SCL语言编写的栈函数,它以不定长数组作为存储区,以实数作为数据类型,实现了栈的初始化、入栈和出栈的操作。

CHUXUEZHE8210的博客 2331

Emacs入门到精通:开发者的高效编辑利器

Emacs是一款功能强大的文本编辑器,由GNU项目维护。其不仅仅是一个编辑器,更是一个集成开发环境(IDE)。Emacs的设计宗旨是可扩展和可定制,用户可以通过Emacs Lisp(Elisp)语言编写脚本和插件,来实现几乎任何功能。这使得Emacs在开发者社区中拥有极高的声誉和广泛的应用。Emacs提供了强大的文本编辑功能、文件管理、项目导航、版本控制、调试支持和编程语言的集成,这些特性使其成为了许多开发者的首选工具。

iShare_Carlos的博客 4767

FFmpeg实战:5分钟搞定m3u8视频下载与ts文件合并(附完整命令)

本文详细介绍了如何使用FFmpeg快速下载m3u8视频并合并ts文件为mp4格式。通过简洁的命令行操作,读者可以轻松完成视频处理任务,包括环境准备、链接获取、下载合并及性能优化等实用技巧,特别适合需要高效处理流媒体内容的用户。

weixin_30836759的博客 221

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例)

本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。

q9w8e7r6t5的博客 511

程序员小助手 | Emacs,最强编辑器,没有之一

Emacs的Logo -- 简书作者 谢恩铭 转载请注明出处 【程序员小助手】系列 在这个系列文章(不定期更新)中,小编会把这些年的编程学习和工作中使用到的个人感觉非常好的软件推荐给大家,希望能够共享美好资源,使大家提高编程和办事效率。 Emacs,最强编辑器,没有之一 小编知道,此标题一出,肯定会遭受广大群众“诟病”,说不好还会被其他编辑器的粉丝暗地里“干掉”。 比如,Vim,Subli

程序员联盟 4138

银河麒麟V10 SP3离线安装Nginx1.21.5全记录(附11个rpm包下载清单)

本文详细记录了在银河麒麟V10 SP3操作系统上离线安装Nginx 1.21.5的全过程,包括11个必备rpm包的下载清单。通过分步骤的实战指南,帮助用户在国产化环境中高效部署Nginx服务,涵盖安装、配置、调优及故障排查等关键环节,特别适合金融、政务等对安全性要求高的场景。

weixin_30872337的博客 604

【开发工具】从入门到精通:Emacs 使用全攻略

学习 Emacs 就像是一场充满惊喜的冒险,从基础的文件操作、文本编辑,到深入探索模式运用、快捷键定制,再到打造个性化的界面和丰富的插件配置,每一步都让我们更深入地领略到它的强大魅力 。

大雨淅淅的博客 2950

【GD32F407】i2c主机发送,从机中断接收

前言 现在手里负责的一个项目需要用i2c和主芯片进行通信主动发送,中断接收,这就需要支持i2c主机模式和从机模式,先查看原理图 这里我们用到了两条i2c总线进行数据的交替传输,避免在使用一条总线是发送数据和接收数据冲突 初始化i2c控制器 s32_k i2cDevInit(u8 byBusId, TI2cBus *pTI2cBus) { //PCLK = 36000000 BOOL retFlg = FALSE; int I2xSCL = pTI2cBus->byFastMode ?

Enosji的博客 6246

基于51单片机的智能花盆灌溉系统设计与实现

本文详细介绍了基于51单片机的智能花盆灌溉系统设计与实现,通过DS18B20温度传感器、土壤湿度传感器和LCD1602显示屏等硬件模块,结合精确的算法控制,实现自动监测与灌溉。系统解决了传统灌溉依赖定时器、缺乏可视化界面的问题,适合上班族、园艺爱好者和植物园工作人员使用,有效提升植物养护效率。

honey的博客 1014

#你真的知道吗?了解Emacs

Emacs作为一种历史悠久且功能强大的文本编辑器和集成开发环境,以其高度的可定制性、丰富的内置功能、强大的快捷键系统和跨平台特性,赢得了众多程序员和技术工作者的青睐。它不仅是一个简单的文本编辑器,更是一个集成了多种工具和工作流的开发平台。Emacs的核心优势在于其可扩展性和灵活性。用户可以通过Emacs Lisp语言自定义编辑器的各个方面,从简单的快捷键设置到复杂的宏和脚本编写,几乎可以实现任何自定义功能。这种灵活性使得Emacs能够适应不同的编程任务和用户习惯,成为许多程序员的首选工具。

Dingdangr的博客 1948

【立创EDA-PCB设计基础】6.布线铺铜实战及细节详解

本文进行布线铺铜实战及详解布线铺铜的细节

嵌入式阿齐Archie 4万+

Emacs快速入门

Emacs快速入门 Ubuntu初安装时,其时是有emacs图形界面和emacs终端界面两个快捷方式的。你只需要用鼠标点击就可以进入相应的模式。 不过如果你真心开始想用emacs,相信会有更便捷的方式,比如在终端输入emacs -nw,我们可以查emacs的帮助文档来看一眼这个-nw参数是什么意思(--no-window-system, -nw),如下 打开emacs的帮助文档:emacs ...

tanmx219的博客 2887

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Eclipse Che 的 Emacs 插件:Theia Emacs Plugin 快速入门指南

Eclipse Che 的 Emacs 插件:Theia Emacs Plugin 快速入门指南 项目介绍 概述 Eclipse Che 是一个开源的云端集成开发环境(IDE),旨在提供基于浏览器的编程体验,让开发者可以轻松地在任何设备上进行代码编辑和项目管理。而 che-theia-emacs-plugin 则是专门为 Che 构建的一个插件,它引入了 Emacs 的功能到 Theia 环境中。...

gitblog_00905的博客 787

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Doom Emacs 快速入门与实践指南

Doom Emacs 是专为那些对传统配置感到疲惫的Emacs老手设计的配置框架,它追求的是更少的“框架感”,提供稳定且可重复的配置基础,同时兼顾性能,力求启动迅速。Doom Emacs 不仅适合寻求轻量化和高效配置的资深用户,也是新手探索这个自诩为操作系统级别的编辑器的理想起点。通过一系列精心策划的原则,如强调速度优化、接近原生体验以及高度定制性,Doom Emacs旨在给予用户强大的灵活性与高...

gitblog_00629的博客 621

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Emacs 快速入门指南

Emacs 快速指南.(查看版权声明请至本文末尾)【注意:位于【】之间的内容是译注,比如本行,下同。】Emacs 键盘命令通常包含 CONTROL 键(有时候以 CTRL 或 CTL 来标示)和 META 键(有时候用 EDIT 或 ALT 来标示)。为了避免每次都要写出全名,我们 约定使用下述缩写:C- 表示当输入字符 时按住 CONTROL 键。 因此 C-f 就表

脱离了低级趣味的流氓 944

emacs快速入门

移动 C-v 向前移动一屏M-v 向后移动一屏C-l 重绘屏幕,并将光标所在行置于屏幕的中央C-f 向右移动一个字符 C-b 向左移动一个字符M-f 向右移动一个词【对中文是移动到下一个标点符号】 M-b 向左移动一个词【对中文是移动到上一个标点符号】C-n 移动到下一行 C-p 移动到上一行C-a 移动到行首

行疆 365

emacs Dired 快速入门

关于dired,现在属于emacs内嵌的功能,理解方式就是cli的资源管理器 方便键盘操作,解放你的鼠标。 打开: M-x dired or C-x C-f 目录名 移动: 与emacs默认移动一致 enter进入文件夹或者打开文件 o新建一个窗口并打开文件 q返回上层文件夹 p上一行 n下一行 预览: 这是个贼好用的功能,经常需要在目录里钻来钻去的

bigmarco的专栏 4852

PyCaret 控制平面 Phase 4–14 落地笔记:数据目录、模型注册表与分布式 Worker 全链路实现

> 本篇技术指南以仓库内 [docs/revamp/PHASE-4-14-NOTES.md](https://link.gitcode.com/i/663491c4a334e86324e354eb5a69ff7e) 为骨架,结合 `services/api/pycaret_server` 下的真实源码展开。它面向 PyCaret 4.0 控制平面(React + FastAPI 服务端)的开发者与

gitblog_01146的博客 367

emacs 快速入门教程

ctrlx ctrl c 不存盘退出ctrl x ctrl s 存盘退出ctrl x 1 保留一个窗口alt x erc 进入irc功能ctrl x o 在多个窗口切换ctrl x 0 关闭当前窗口crtl x 4 0 关闭当前窗口和缓冲区ctrl x 2 垂直切分窗口ctrl x 3 是水平切分窗口ctrl x ctrl f 打开文件ctrl k 删除行 ...

alantop's blog 124

emacs-ng快速入门指南:10分钟掌握现代Emacs开发环境

emacs-ng是一个革新性的Emacs分支,它融合了TypeScript支持、多线程处理、异步I/O和WebRender渲染引擎,为用户带来了现代化的编辑体验。本文将帮助你在10分钟内快速搭建并熟悉这个强大的开发环境。 ## 🚀 为什么选择emacs-ng? emacs-ng在传统Emacs的基础上引入了多项关键改进: - **TypeScript/JavaScript集成**:通过De

gitblog_00574的博客 299
上一篇: 必须知道的社会生活中十二大著名法则
下一篇: xmms乱码解决方法
freerock
博客等级 码龄20年 13粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值