当前位置:  开发笔记 > 开发工具 > 正文

Emacs相当于Vim的yy10p?

如何解决《Emacs相当于Vim的yy10p?》经验,为你挑选了4个好方法。

如何在Emacs中轻松复制10行?我找不到复制线快捷方式或功能.我可以使用C-aC-spcC-eM-w来费力地复制该行,但是如何将其粘贴多次呢?

在我去写自己的功能之前的任何想法.



1> ljs..:

您可以使用键盘宏: -

Ca Ck Cx(Cy Cj Cx)Cu 9 Cx e

说明:-

加:开始行

Ck:杀死线

Cx(:开始录制键盘宏

Cy:Yank遇难

Cj:转到下一行

Cx):停止录制键盘宏

Cu 9:重复9次

Cx e:执行键盘宏


请注意,自从Emacs 22.1发布以来,您实际上可以使用``运行`kill-whole-line`并且相当于vi中的`dd`.因此,每当你发现自己在做"Ca Ck Ck"时,你只需要``.

2> ShreevatsaR..:

复制:

如果您经常使用行,则可能希望在未选择任何区域时使copy(kill-ring-save)和cut(kill-region)在行上工作:

(defadvice kill-ring-save (before slickcopy activate compile)
  "When called interactively with no active region, copy a single line instead."
  (interactive
   (if mark-active (list (region-beginning) (region-end))
     (list (line-beginning-position)
           (line-beginning-position 2)))))
(defadvice kill-region (before slickcut activate compile)
  "When called interactively with no active region, kill a single line instead."
  (interactive
   (if mark-active (list (region-beginning) (region-end))
     (list (line-beginning-position)
           (line-beginning-position 2)))))

然后你可以用Mw复制该行.

粘贴:

前缀参数通常只执行一次多次动作,因此你可以期待Cu 10 Cy工作,但在这种情况下,Cy使用它的参数来表示杀死环的哪个元素"猛拉"(粘贴).我能想到的唯一解决方案是kronoz所说的:用Cx(Cy Cx)记录一个宏,然后让Cu的参数kmacro-end-and-call-macro改为(那是Cu 9 Cx e,甚至只是C-9 Cx e或M-9 Cx) E).

另一种方式:你也可以留下来M-x viper-mode使用yy10p :)



3> Baxissimo..:

您可能知道这一点,但对于许多命令,"Cu 10"前缀将起到作用.不幸的是,对于Cy yank命令,"Cu"被重新定义为"返回杀死戒指中的许多物品,然后猛拉该物品".

我以为您可以使用Cu前缀命令使用copy-to-register和insert-register命令,但显然这也不起作用.

同样Cx z,"重复最后一个命令"似乎对Cu免疫.

另一个想法是使用M-:得到一个Eval提示并输入一些elisp.我认为像(dotimes '10'猛拉)可能会做到这一点,但它似乎没有.

因此看起来在宏上使用Cu可能确实是最好的,你可以做的不是编写自己的小函数.

如果我投票,我会投票支持kronoz.


(dotimes '10(yank))似乎对我有用

4> Paul..:

在此示例中,您不需要Cx和Cx e.

您可以直接将重复参数赋予Cx).这将停止录制并一步重复宏.或者您可以跳过Cx并直接进入Cx e,因为Cx e将在重复之前结束录制.

选择哪种方式取决于您喜欢重复计数的工作方式.对于Cx),你说你想要多少次重复(在这种情况下为10).对于Cx e,您需要说明还剩多少次重复(即9).


Ca Ck Ck也会杀死尾随的换行符,所以你以后不必自己回来.它比使用标记更快,并且不需要您更改任何变量.

更好(除非你在终端),你可以使用CS-Backspace*来杀死整条线,无论你在哪里.

[*如果您使用的是X窗口,请确保键入shift(而不是 alt),否则您可以终止会话!]

说到终端,如果您发现无法输入C-9,M-9是一个不错的选择.


在Emacs 22及更高版本中,默认情况下F3启动宏,F4结束/重复宏.您只需按F3开始录制,完成后按F4,然后再次按F4重复播放宏.(F4也有争议.)


把这一切放在一起,得到当前行的10个副本:

CS-Backspace:杀掉这一行

F3:启动宏

Cy:猛拉线

C-1 C-0 F4:让那10个猛拉

不像yy 10 p那么短,但非常接近.:)

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有