今天努了把力终于把初稿写完了。话说 LaTeX 真是超级容易上手啊,感觉看过入门手册和描述文档后,今天基本上可以脱手写论文了。

写完之后去吃了东北菜,然后回家又开始摸鱼,研究起了 Emacs + AucTeX 的组合。

受了一年成为 Emacs 高手的蛊惑,我使用了 Purcell 的配置,花了一点时间把 tutorial 读了一遍,做了笔记,并通过别人的教程将不理解的部分大致搞了清楚。之后我便按照不知道是哪个学校出的快速上手教程过了一遍。

不过这个教程的配置和我的有所不同:

  • 在 minibuffer 进行选项补完时,我只能使用RET,C-j 会导致补完失败. 还有一些教程里没有提到的 AucTeX 的特性:

  • 可以直接使用 C-c C-c 编译,C-c C-v 预览 pdf,并不需要像文中一样在 shell 里敲命令进行调用;

  • LaTeX-indent-line will indent the current line;

  • C-j newline-and-indent inserts a new line (much like ) and moves the cursor to an appropriate position by the left margin;

  • no indent. 感觉还蛮顺利的,下次摸鱼时可以研究一下 org-mode,以后说不定就能在 Emacs 里管理文献了~

感觉明天可以去搞这些的 Reference Card,让生活更简单一些~

附笔记:

Emacs

  • C control key
  • M meta key (esc in Mac)
  • C-j Return(Not RET)
  • C-l Clear screen and redisplay all the text, moving the text around the cursor to the center of the screen, top of the screen, bottom of the screen
  • C-f Move forward a character
  • C-b Move backward a character
  • M-f Move forward a word
  • M-b Move backward a word
  • C-a Move to beginning of line
  • C-e Move to end of line
  • M-a Move back to beginning of sentence
  • M-e Move forward to end of sentence
  • C-n Move to next line
  • C-p Move to previous line
  • C-v Move forward one screenful
  • M-v Move backward one screenful
  • M-< Move to the beginning of the whole text
  • M-> Move to the end of the whole text

=======

  • Delete the character just before the cursor
  • C-d Delete the next character after the cursor
  • M- Kill the word immediately before the cursor
  • M-d Kill the next word after the cursor
  • C-k Kill  from the cursor position to end of line
  • M-k Kill to the end of the current sentence
  • C-space Mark activated/cleared
  • C-w Kill all marked content
  • C-y Yanking, reinserts the last killed text
  • M-y (yank-pop),这个命令只能在刚用完C-y后使用。它的作用是用kill 环中再前一个内容替换掉刚用C-y粘贴出来的内容。简单点说,假如kill 环中有1号、2号、3号记录,使用C-y后3号记录调出,紧接着使用M-y,删掉3号记录,换成2号记录,还有M-y是可以连着多次使用的,我们再按一下1号记录就出来了。虽然这个命令可以使用前一条记录替换此条记录,但它并不会更改kill 环中记录的顺序,仅是一个指针的移动而已。另外M-y 命令可以接受参数调用,比如说C-u 2 M-y 就等价于C-y M-y。
  • C-M-w (append-next-kill),这个命令只有在它下一个命令是kill 命令时才有效,作用是把下个kill 命令删掉的东西和kill 环中最后一个记录合并。

    =======

  • C-x Character eXtend. Followed by one character.

  • M-x Named command eXtend. Followed by a long name.

  • C-x C-f Find a file

  • C-x C-s Save the file

  • C-x C-w Save the file as…

  • C-x s Save some buffers

  • C-x k Close buffer

  • C-x C-b list buffers

  • C-x b Switch buffers

  • C-x C-c End Emacs

  • C-x 1 One window (kill other windows)

  • C-x 2 split window below

  • C-x 3 split window vertically

  • C-x o other window

  • M-x make-frame

  • M-x delete-frame

    =======

  • C-g Quit a partially entered command

  • get out of the recursive editing level

  • C-/ Undo (except command do not change the text, self-inserting characters handled in groups of up to 20) C-_ or C-x u

  • C-u numeric argument (repeat count)

  • C-s searching, using to terminate

    =======
    Help

  • C-h c <command character or sequence Display brief description of the command

  • C-h m View documentation on your current major mode. 显示当前激活的所有模式的信息

  • C-h k <…> Display the documentation of the function, as well as its name, in a Emacs window. 查找一个键被绑定在了哪个命令上

  • C-h f Discribe a function. 显示给定函数的描述信息

  • C-h a Command Apropos 查找一个匹配一段描述的命令

  • C-h i Read included Manuals

  • C-h t        启动Emacs官方教程

  • C-h b        列出来所有的有效键绑定

  • C-h w        查找一个命令被绑定在了哪些键上

    ======
    Emacs的接口分成三个层次来:buffer,window 和 frame。

  • window 是显示buffer的一个viewport(社区)。一个window一次只能显示一个buffer。但是一个buffer可以在多个window中显示。在窗口下面有一个mode-line,它用于显示当前buffer的信息。

  • frame 是Emacs的一个”窗口”(这是标准的术语。比如,’窗口’是现代桌面的称谓),它包含了标题栏,菜单栏,还有一个或多个’window’(这是Emacs的术语,比如上面提到的’window’)。

====== 常用的自动补全有四个键TAB、SPC、RET和?。

  • TAB    尽可能的补全Minibuffer中的字符,如果没有满足要求的,则列出所有可能的补全。对应命令minibuffer-complete。
  • SPC    最多补全Minibuffer中的一个词,如果没有满足要求的,则列出所有可能的补全,在输入路径时SPC不可用。对应命令minibuffer-complete-word。
  • RET    提交Minibuffer中的文本,或者选取第一个可能的补全提交。对应命令minibuffer-complete-and-exit。
  • ?      列出所有可能的补全。对应命令minibuffer-completion-help。

======

  • M-p 移到Minibuffer历史中的前一条,previous-history-element。
  • M-n 移到Minibuffer历史中的后一条,next-history-element。