【问题标题】:Yank/copy selected text to clipboard in IPython Vi mode在 IPython Vi 模式下将选定的文本复制/复制到剪贴板
【发布时间】:2020-03-09 23:52:05
【问题描述】:

我不知道如何将我在 Vim 模式下在 IPython 中选择/突出显示的行复制到普通剪贴板(粘贴到 IPython shell 之外)。通常,在 vim 中,我可以使用 "+y 拉出文本并将其粘贴到其他地方,但在 IPython Vim 模式下按这些键似乎不起作用。所以我最终不得不使用鼠标突出显示所需的文本并使用 Command-C 复制它。

这很烦人,因为如果我在 IPython 中有多行,那么我必须过滤掉许多垃圾字符,如下所示:

In [8]: import numpy as np 
   ...: import math 
   ...:  
   ...: print("hi") 
   ...: while(True): 
   ...:     break 
   ...:  
   ...: x = 3 
   ...: y = 4 
   ...:  
   ...:   

在这里,我必须过滤掉每一行的In [8]...:。但是选择使用vV 会适当地忽略这些垃圾字符。

This answer 没有说明如何在 Vi 模式下执行此操作,也没有提及任何关于拉到系统剪贴板的内容。

【问题讨论】:

  • 你可以通过Opt+drag(在终端)或Cmd+Opt+drag(在iTerm2)选择一个矩形块,这样你就可以选择没有前导标记的代码。
  • 谢谢,这有帮助。最好的情况是,如果有办法直接在 vim 模式下进行。
  • One of the answers 确实提到了从 vi 模式复制,但由于某种原因没有提到如何进行,也没有谈到复制到系统剪贴板。 "+y 命令不适用于我的 IPython 7.10.1
  • 我编辑了问题以反映该答案。

标签: python vim ipython


【解决方案1】:

如果您在 vim 终端中运行 ipython,您可以在 ipython 中键入以下内容: %history -l 10

这将打印最后 10 个不带前导点的命令。可以轻松复制。

您需要在 vim 终端中打开 ipython。然后,在键入 %history 命令(如上)后,您需要使用组合键Ctrl-W Shift_N 进入正常模式。然后,使用 V(块视觉模型)将多行复制到 + 寄存器中,并使用 "+y 命令。然后,您可以使用 "+p 将其复制到另一个 vim 缓冲区或使用“右键单击,然后粘贴”的其他应用程序(例如 gedit)。

【讨论】:

  • 有趣。所以你的意思是我不应该在 Vi 模式下运行 IPython,但我应该在正常模式下运行 IPython,而是在 Vim 中(使用 :terminal 命令)?
  • 我试过了!它确实有效。我还没有过多地搞乱这个设置,但我很好奇为什么有人会选择在 Vi 模式下使用 IPython,因为他们可以从 Vim 窗口中加载 IPython 会话。有什么想法吗?
  • vi 模式下的 IPython 类似于 readline vi 模式。它不包括 vim 的所有功能,例如高亮/选择。因此,您需要在 vim 终端中使用 IPython 才能使用所有 vim 功能。不过,IPython 中的 vi 模式仍然很有用,因为您可以使用 j 和 k 键上下多行命令。使用 $ 等到行尾,基本上你可以在 bash vi 模式下做的所有事情(set -o vi)
  • 您可以同时使用:在 vim 终端中使用 IPython,并且 IPython shell 应该在 vi 模式下接受用户输入。
猜你喜欢
  • 2015-08-27
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多