python - 如何在 Vim 中的 Matlab 等两行之间进行选择?
问题描述
在 Matlab 中,有一种方法可以在两个预定义的类型标记之间选择代码。我想使用##
作为块标记在 Python 上复制相同的东西。例如,假设光标在Block 2
变量上y1
:
## Block 1
import numpy as np
import matplotlib.pyplot as plt
## Block 2
x = np.linspace(0, np.pi*4, 100)
y1 = np.sin(x) # <== My cursor is here
y2 = np.cos(x)
y3 = np.tan(x)
## Block 3
for i in range(5):
print(i)
plt.plot(x, y)
plt.show()
我想将以下块拉入我的寄存器
## Block 2
x = np.linspace(0, np.pi*4, 100)
y1 = np.sin(x) # <== My cursor is here
y2 = np.cos(x)
y3 = np.tan(x)
================================================
编辑1:我已经搜索了整个stackoverflow,但找不到任何人问类似的问题。其中大部分是如何在python中选择函数或类。我知道这是可能的,因为我找到了一个可以执行此操作的插件wmvanvliet/jupyter-vim(有关它的工作视频,请参见自述文件中的第一件事)。但它是完整的 REPL,它使我的启动时间增加了 200 毫秒。
我确信有一个简单的 vim 方法可以做到这一点。我就是找不到
解决方案
您可以使用
/^##
找到块的开始和结束位置。
如果您的光标在中间,您可以使用N
转到上一个点击(即块的开头),按v
进入视觉模式,然后点击n
转到下一个块的开始。由于您不想拉下一个块开始,因此您需要向上移动一行k
(还有其他方法,但这很好用,因为无论如何您在块之间都有一个空行)。
把它们放在一起:
/^##<CR>Nvnk
将选择光标所在的块。
如果输入的字符太多,您可以将其制成函数或宏。这是一个关于如何将命令放在宏中的很好的教程。如果我们想创建一个宏并将其保存在寄存器 b 中(我猜是为了块?),我们可以这样做
qb/^##<CR>Nvnkq
并使用 执行宏@b
。
推荐阅读
- firebase - 测试 Firebase 中缺失的属性 -> 数据库 -> 规则
- regex - 如果列表中尚不存在,如何添加项目?
- facebook - 我可以使用 Facebook 管理员角色/帐户来测试 Facebook 应用程序是否等同于 Facebook 开发人员角色/帐户?
- dynamics-crm - Dynamics CRM:无法根据活动表单中的父 ID 填充相关子记录
- react-native - 如何修复“OnPress 不在标题内工作但独立工作”
- python - 如何评估分类器的准确性并在 GridSearchCV 中留下一个生成 roc 曲线?
- adonis.js - 如何在子域和主域的adonis.js中共享会话
- android - 使用 deeplearning4j 加载 keras 模型时出错
- java - 如何在 PHP 中创建通用 DAO 接口?
- python - Python,迭代和修改df字典中的DataFrame