在neovim中选择向前和向后到任意字符串

在neovim中选择向前和向后到任意字符串,vim,ipython,vi,neovim,Vim,Ipython,Vi,Neovim,我正在学习使用tmux+neovim+ipython作为一个科学的pythonide,主要用于数据处理和图形制作 为了能够轻松地重新运行一段代码,如何创建一个快捷方式,从光标位置向前和向后选择某个任意标记?。例如,如果标记设置为$%,并且我的光标位于以下行中的¨ #$% x = bigarray[:, 0] y = bigarray[:, 1] scalar = 1.5¶ y = y * scalar axis1.plot(x, y)#$% 我想进入正常模式,键入s,并选择此选项: x = s

我正在学习使用tmux+neovim+ipython作为一个科学的pythonide,主要用于数据处理和图形制作

为了能够轻松地重新运行一段代码,如何创建一个快捷方式,从光标位置向前和向后选择某个任意标记?。例如,如果标记设置为$%,并且我的光标位于以下行中的¨

#$%
x = bigarray[:, 0]
y = bigarray[:, 1]
scalar = 1.5¶
y = y * scalar
axis1.plot(x, y)#$%
我想进入正常模式,键入s,并选择此选项:

x = somearray[:, 0]
y = somearray[:, 1]
scalar = 1.5
y = y * scalar
axis1.plot(x, y) 
我找到了vim的文档,它与我想要做的类似,但只适用于特定的字符

编辑:如果存在多个分区,则仅选择当前分区也很重要。即使用以下文件

#!/usr/bin/env python3
#$%
section_1()¶
#$%
stuff_not_in_a_section
#$%
section_2()
#$%
s必须仅选择节_1

编辑2:使用不同的开始/结束符号也可以,例如{{{和}}的默认折叠标记


我认为与的结合,它向ipython发送一个选择,以及一个匹配的foldmarker集合,将使neovim成为一个好的IDE。我们也欢迎对我的处境采取另一种办法

您可以使用搜索模式:

/\v(#\$\%)@<=%(.|\n|\r){-}(#\$\%)@=
这将:

将光标位置标记为mm
搜索模式/\v\$\%@我找到了一个我最满意的解决方案。它要求将代码部分定义为基于标记的折叠/部分,这与我使用折叠的方式大致相同

如果我在一个折叠内,按za将其关闭,然后按C-C-C将一段发送给vim slime,则发送整个折叠,而不考虑内部换行符。光标将根据需要返回到命令末尾的上一个位置

所以总的来说,

nmap <leader>s za<C-c><C-c>za 

这样做的诀窍,虽然一些恼人的屏幕闪烁的折叠打开和关闭

这当然是在正确的方向!遗憾的是,它不适用于包含多个代码段的文件。我将更新OP以澄清此要求。
nmap <leader>s za<C-c><C-c>za