2011-12-25 38 views
0

在组织模式下,我想将区域转换为列表。将区域转换为列表

说我有以下文字

One 
Two 
Three 

我怎样才能把它变成下面的列表(通过手动编辑它时除外)?

- One 
- Two 
- Three 

是否有一些命令,我​​可以运行,以实现后,我已经标记的区域?

+0

您可以使用Emacs的正则​​表达式引擎将'^'替换为区域上的' - ',但我不知道它的命令。 – fge 2011-12-25 21:56:52

+1

[emacs:Orgmode,如何从一行中创建列表]的可能重复(http://stackoverflow.com/questions/2250930/emacs-orgmode-how-to-make-a-list-from-a - 行代码) – jfs 2011-12-26 00:56:56

回答

6

有很多方法。这里有几个:

  1. query-replace-regexp:要么标示的区域,或只是移动点线1的开始,然后用C-M-%^RET-RET。如果您标记了该区域,则可以使用以取代该地区的所有比赛。

  2. string-rectangle:设置在1号线开始的标志,将光标移动到3行的开头,键入CX[R 吨-RET

  3. cua-selection-mode:如果启用cua-selection-mode(我在.emacs中打开这个选项),你可以在第1行的开头激活一个矩形,用C-RET,将点移动到第3行的开头,输入-, d然后再次键入C-RET以取消激活该矩形。

  4. 键盘宏:在第1行,键入F3CX开始录制,然后-SPC作为宏的内容,和F4CX停止录制。现在您可以标记区域并键入C-xC-kr将该宏应用于该区域中的每一行。

  5. 我不知何故错过了这是关于组织模式,这使得它成为emacs: Orgmode, how to make a list from a block of lines(见gregor's answer)的重复。

+0

最后的选择(5)可能是组织模式中最好的选择。 'C-c -'(Ctrl-C减号)应该将行变换成列表。我有时有第一个项目的对象,它不是一个列表项目,在最坏的情况下,你可能不得不手动改变它,然后其他应该正确遵循(我不完全确定它为什么有时失败,但不是其他)。 – 2011-12-27 16:13:42