Emacsは初めてです。私はこれをググってみましたが、良い答えはありません。それらの1つはCtrl-n Ctrl-aバックスペースですこれは動作しますが愚かです。行のブロックを単一の行に結合する迅速で簡単な方法はありますか?
実際、Esc-qを使用して段落を自動入力できるようになりましたが、元に戻すことなく元に戻すにはどうすればよいですか?
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)
)
明らかにこれは、段落が100000文字未満の場合にのみ機能します。
参加して呼び出す必要がある行のグループのlast行の任意の場所にポイントを配置します
M-^
すべての行がマージされるまで繰り返し。
注:現在結合されているすべての行の間に1つのスペースが残ります。
M-x join-line
は2行を結合します。便利なキーストロークにバインドするだけです。
改行を何も置き換えないでください。
Multiple Cursors M- ^と組み合わせると、選択されたすべての行が1つに折りたたまれ、余分な空白がすべて削除されます。
たとえば、バッファ全体を選択し、複数カーソルモードを呼び出し、1行に折りたたみ、次に複数カーソルモードを無効にします。
C-x h
M-x mc/edit-lines
M-^
C-g
SublimeのテキストJで行を結合する方法が好きなので、次のようにします。
(defun join-lines (arg)
(interactive "p")
(end-of-line)
(delete-char 1)
(delete-horizontal-space)
(insert " "))
Emacsの「結合」の慣習的な名前は「フィル」です。はい、2つの行をM-^
で結合できます-これは便利です-より一般的にはn
lines。これについては、fill*
、fill-region
などのfill-paragraph
コマンドを参照してください。
入力できるものを選択する方法の詳細については、 this を参照してください。
以下の関数を使用して「M-J」にバインドします。
(defun concat-lines ()
(interactive)
(next-line)
(join-line)
(delete-horizontal-space))
カーソル位置を保持したい場合は、 save-excursion を使用できます。
「元に戻すことなく元に戻すにはどうすればよいですか?」:
(defun toggle-fill-paragraph ()
;; Based on http://xahlee.org/emacs/modernization_fill-paragraph.html
"Fill or unfill the current paragraph, depending upon the current line length.
When there is a text selection, act on the region.
See `fill-paragraph' and `fill-region'."
(interactive)
;; We set a property 'currently-filled-p on this command's symbol
;; (i.e. on 'toggle-fill-paragraph), thus avoiding the need to
;; create a variable for remembering the current fill state.
(save-excursion
(let* ((deactivate-mark nil)
(line-length (- (line-end-position) (line-beginning-position)))
(currently-filled (if (eq last-command this-command)
(get this-command 'currently-filled-p)
(< line-length fill-column)))
(fill-column (if currently-filled
most-positive-fixnum
fill-column)))
(if (region-active-p)
(fill-region (region-beginning) (region-end))
(fill-paragraph))
(put this-command 'currently-filled-p (not currently-filled)))))
(global-set-key (kbd "M-q") 'toggle-fill-paragraph)
From EmacsWiki:Unfill Paragraph から
;;; Stefan Monnier <foo at acm.org>. It is the opposite of fill-paragraph
(defun unfill-paragraph (&optional region)
"Takes a multi-line paragraph and makes it into a single line of text."
(interactive (progn (barf-if-buffer-read-only) '(t)))
(let ((fill-column (point-max))
;; This would override `fill-column' if it's an integer.
(emacs-LISP-docstring-fill-column t))
(fill-paragraph nil region)))
join-line
は2行の間に1つのスペースを残します。また、2行の結合のみをサポートします。スペースを1つ残さずに多くの行を結合したい場合は、次のように「検索置換」モードを使用して解決できます。
C-%
C-q C-j
Enter
Enter
Enter
できました。