通过Emacs,如何将两条线连接成一条线?

jca*_*dam 46 emacs editor

我是Emacs的新手.我用谷歌搜索了这个但没有好的答案.其中一个是Ctrl-n Ctrl-a Backspace这有效,但很愚蠢.是否有一种快速简单的方法将一行线加入一行?

实际上,我现在可以使用Esc-q自动填充段落,但是如果没有UNDO,我怎么能让它恢复呢?

Ray*_*ega 179

将点放在需要加入和调用的行组的最后一行的任何位置

M-^
Run Code Online (Sandbox Code Playgroud)

反复进行,直到所有线都合并为止.

注意:它在所有现在连接的行之间留下一个空格.

  • 如果你想从 ***first*** 行加入,它是(足够直观),`Cu M-^`(这往往更有用,恕我直言)。 (4认同)
  • M-^ 通常绑定什么? (2认同)

pgs*_*pgs 32

M-x join-line将加入两行.只需将其绑定到方便的按键即可.

  • 但是如果你去了块的最后一行并且多次点击M- ^(连接线的键绑定),你将会产生相同的效果.速度非常快,所以除非你有数百行加入,否则我会更喜欢填充列黑客.否则按照Tal的建议,标记块并替换换行符(CQ CJ). (8认同)
  • 这与按下"M- ^"完全相同,因为`join-line`别名为`delete-indentation`,它被绑定到`M- ^`. (2认同)

Tal*_*man 8

只需更换换行符.


hun*_*tar 7

多个光标与M-^组合将所有选定的行折叠为一个,并删除所有无关的空白区域.

例如,要选择整个缓冲区,请调用多个游标模式,折叠为一行,然后禁用多个游标模式:

C-x h
M-x mc/edit-lines
M-^
C-g
Run Code Online (Sandbox Code Playgroud)


Mic*_*ott 6

“join”的 Emacs 传统名称是“fill”。是的,您可以将 两条线连接起来M-^——这很方便——但更普遍的是,您希望连接n线。对于这一点,请参阅fill*命令,诸如 fill-regionfill-paragraph

有关选择可以填充的内容的更多信息,请参阅内容。

此外,您可以M-^通过首先选择这些行来连接多行。(请注意,通用参数不适用于此。)

  • 会投票这是惯用的正确答案 (2认同)

小智 5

我喜欢Sublime文本的方式使用Command J加入行,所以我这样做:

(defun join-lines (arg)
  (interactive "p")
  (end-of-line)
  (delete-char 1)
  (delete-horizontal-space)
  (insert " "))
Run Code Online (Sandbox Code Playgroud)


Ral*_*lph 4

您可以为此定义一个新命令,在使用 Esc-q 命令之前临时调整填充宽度:

;; -- define a new command to join multiple lines together --
(defun join-lines () (interactive)
 (setq fill-column 100000)
 (fill-paragraph nil)
 (setq fill-column 78)
)
Run Code Online (Sandbox Code Playgroud)

显然,这只适用于您的段落少于 100000 个字符。

  • 如果不破坏 fill-column,那将是 (defun join-lines () (interactive) (let ((fill-column 999999)) (fill-paragraph nil))) (10认同)