Vimperator复制/粘贴


23

我正在尝试Vimperator。我主要希望它用于hjkl滚动,并且我喜欢其“提示”系统来跟踪链接。这两个功能确实是我所需要的。我认为。

我不在乎其他功能,只是有时会妨碍我。

最让我烦恼的是复制/粘贴。我习惯Ctrl+ c/ Ctrl+ v,我不介意使用其他快捷方式,但是..

:help yank 表示复制选定的文本是使用Y完成的,但是提到的唯一粘贴方法是鼠标中键!

这太离谱了Vim的精神!

如何在不使用鼠标的情况下粘贴Vimperator?


这个问题的答案都是过时的(因为它们已经七岁了,这是有道理的)如果您从Google登陆到这里,这些(截止到今天)不是您想要的答案
Arthur Ulfeldt

Answers:


15

您可以做的最好和最简单的操作是重新映射键。不难 将其放入您的_vimperatorrc(或Linux中的.vimperatorrc)

noremap <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

<C-v>默认情况下映射到“通过下一个”模式,这意味着您按下的下一个键直接发送到Firefox,而不会被vimperator处理和食用。因此,上面的映射仅激活“通过下一个”模式并发送相应的快捷方式。

甚至还有一个vimperator插件,可进一步扩展此功能并重新映射所有常见的Windows快捷方式,因此它们的行为符合预期。


3
为<CV>(粘贴)它应该是inoremap
哈森

接受插件链接!真棒,并解决了该问题
黑森(Hasen)

2
看起来当前版本(3.8.1)可能默认情况下使Cc和Cv执行OS级复制和粘贴...我无法在更改日志中找到任何有关它的信息,但我只是从Pentadactyl切换到了最新版本Vimperator和Cc和Cv的工作方式就像我想要的那样。
2013年

@hangtwenty似乎是正确的,这里的答案现在已经过时了
Arthur Ulfeldt

36

令我惊讶的是,这个问题没有得到更准确的答案。所选答案的插件链接解决了OP的问题,但是没有人实际说明如何在不使用传递(Cv)模式的情况下将某些内容粘贴到文本字段中。

如果您在INSERT模式下处于文本字段中,并且想要粘贴某些内容,那么在vi-land中要做的显而易见的事情是按ESC和p粘贴。在vimperator中,这是行不通的-ESC使您完全退出INSERT模式,而进入整个页面/选项卡工作模式。

Vimperator通过具有附加的BASIC模式TEXTAREA解决了这一问题。在TEXTAREA模式下,您可以使用在vi中使用的受支持命令。

Enter TEXTAREA mode: C-t
Paste:    p
Copy line:    yy
Delete Char:  x
Delete Line:  dd

等等。

这似乎没有得到很好的记录-我最终主要是错误地弄清楚了它。它在多行和单行文本框中的作用相同。


感谢您的评论。这正是使我的头脑更强大的表单和表单字段所需要的。
ZweiBlumen'3

进入TEXTAREA模式时,@ RevAaron是否像传统的VI环境一样,大多数VI键可用于编辑文本?而且,我还注意到(再次偶然),当我在TEXTAREA模式下按“ d”然后按“ s”或“ a”时,将模式切换为称为VISUAL的模式。如果您能给我一些信息,我将不胜感激。或者即使您喜欢我可以将其作为一个问题,然后您也可以回答它,那么其他人就会使用它。
Mehrad 2014年

13

现在,vimperator重新映射Ctrl + C(从“复制”到“取消”)和Ctrl + V(从“粘贴”到“传递”)。在Linux上,复制/粘贴的首选方法是使用鼠标中键,因此这不是问题。在Windows上,这是用户界面灾难,非常需要修复。

您可以从三个地方复制:Web页面中的文本,Form字段中的文本和外部应用程序中的文本。您可能将复制到两个位置:到表单字段和外部应用程序中。地址栏和命令栏的工作方式类似于表单字段。

Copying from...
     A web page: 'Y' works, '^C' doesn't
     Form field: 'Y' doesn't work, '^C' does
     Extern application: 'Y' doesn't work, '^C' does
  Copying to...
     Form field: '^V' doesn't work, '^V,^V' does
     External application: '^V' works, '^V,^V' pastes twice
 Or, seen another way
       Copy  Paste
 Page  Y     N/A
 Form  ^C    ^V,^V
 App   ^C    ^V

普通用户不会记住该表。他们永远不会弄清楚,因为它没有明确记录,即使有,他们也不会阅读。相反,他们将使用右键单击菜单,这是唯一可在所有地方使用的菜单。实际上,在我开始使用Vimperator几周后,我发现自己是在一个完全不相关的应用程序中这样做的,这是我以前从未做过的。

我们需要将^ C和^ V恢复为原来的正确功能(如复制和粘贴),这意味着需要替换^ C = cancel和^ V = pass-through热键。实际上,这两个热键对于vimperator都是唯一的,并且不会出现在vim中。^ V在vim中表示“阻止视觉效果”,在vimperator中不适用,因此可以轻松将传递指定给其他键。我建议在命令模式下使用反斜杠,在命令和插入模式下都建议使用ctrl +反斜杠。剩下^ C。我认为应该将其移至^ S。它有两个很好的助记符:它是“停止”,它也是XOFF的Unix热键,它没有用,但在语义上相似。^ S当前在vimperator中是“另存为”,它很少使用,仍然可以通过:save或:saveas访问。

撤消也被破坏;它是^ Z,但^ Z不是直通模式,如果不使用鼠标,无法撤消表单字段中的编辑。我认为没有理由不将其移至另一个热键,尤其是因为vim中的^ Z表示挂起,这是完全无关的,并且意外地发现自己处于直通模式非常令人迷惑。我想不出一个非任意的热键来将其更改为,但是^ Z首先是相当随意的,因此任何未使用的热键都可以。

来源:http : //www.mozdev.org/pipermail/vimperator/2008-October/002359.html


2

我一直在寻找一种实现此目的的方法。好东西。但是,如果joe指出,如果我想粘贴到命令行或文本框中,则user4126的noremap解决方案不是很完美。因此,我在http://charlieharvey.org.uk/page/vimperator_cut_and_paste上使用了inoremap和cnoremap对其进行了调整。看起来好像不支持vnoremap。

因此,可以仅使用一次ctrl-v快捷键粘贴到命令行和文本框中。将以下内容粘贴到.vimperatorrc中,然后重新启动Firefox。

noremap <C-v> <C-v><C-v>
inoremap <C-v> <C-v><C-v>
cnoremap <C-v> <C-v><C-v>

noremap <C-c> <C-v><C-c>
inoremap <C-c> <C-v><C-c>
cnoremap <C-c> <C-v><C-c>

2

我找不到给出的答案,因为我在任何地方都看不到Ctrl+ c。我要做的是使用SecureCRT快捷方式。也就是说,要从页面复制:

Ctrl+Ins

对于粘贴: Ctrl+ V两次(就像别人在其他答案中所说的)。


谢谢你,先生。将<cc>映射到<c-ins>解决了我这个问题的特殊风格。
Steve Vermeulen


1

简短回答-^ V ^ V(即Ctrl-V Ctrl-V)

第一个Ctrl-V执行“下一次击键传递”。第二个Ctrl-V粘贴文本。这是我对大多数文本字段所做的。

如果将vi模式用于多行文本字段(设置noinsertmode),则也可以使用p粘贴-因此,如果我想将另一个标签的URL粘贴到此标签中,可以转到该标签,使用y,然后移回此标签。浏览器的底部栏将显示TEXTAREA,然后按p粘贴URL。


0

我建议使用

map <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

因为如果您打开了外部文本编辑器,那么一个简单的FF抄送窗口将结束外部编辑器,您将丢失所有内容。

BR

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.