我看到了关于VIM的相同问题,这也是我自己在Emacs中想要知道如何实现的。在ReSharper中,我使用CTRL-D来执行此操作。在Emacs中执行此操作的最少命令数是多少?
;; http://www.emacswiki.org/emacs/WholeLineOrRegion#toc2
;; cut, copy, yank
(defadvice kill-ring-save (around slick-copy activate)
"When called interactively with no active region, copy a single line instead."
(if (or (use-region-p) (not (called-interactively-p)))
ad-do-it
(kill-new (buffer-substring (line-beginning-position)
(line-beginning-position 2))
nil '(yank-line))
(message "Copied line")))
(defadvice kill-region (around slick-copy activate)
"When called interactively with no active region, kill a single line instead."
(if (or (use-region-p) (not (called-interactively-p)))
ad-do-it
(kill-new (filter-buffer-substring (line-beginning-position)
(line-beginning-position 2) t)
nil '(yank-line))))
(defun yank-line (string)
"Insert STRING above the current line."
(beginning-of-line)
(unless (= (elt string (1- (length string))) ?\n)
(save-excursion (insert "\n")))
(insert string))
(global-set-key (kbd "<f2>") 'kill-region) ; cut.
(global-set-key (kbd "<f3>") 'kill-ring-save) ; copy.
(global-set-key (kbd "<f4>") 'yank) ; paste.
相较于Chris Conway所选的答案,这种方式更为自然。
(global-set-key "\C-c\C-d" "\C-a\C- \C-n\M-w\C-y\C-p\C-e")
这使您可以通过简单地重复使用 Ctrl-c 和 Ctrl-d 快捷键来多次复制一行。
最简单的方法是Chris Conway的方法。
C-a C-SPACE C-n M-w C-y
这是 EMACS 强制实施的默认方式。在我看来,最好使用标准方式。我对自定义 EMACS 键绑定一直很谨慎。EMACS 已经足够强大了,我认为我们应该尽力适应它自己的键绑定。
虽然有点冗长,但当您习惯后,您可以快速操作并会发现这很有趣!
我通常使用:
Ctl-Space(设置标记) 移动到行尾 Ctl-K 删除行 Ctl-Y * 2(粘贴回该行)
可能有更好的方法 :P
C-a C-SPC C-e M-w RET C-y
吗? - jfs