Text 使用视觉模式选择多个文本点?

Text 使用视觉模式选择多个文本点?,text,vim,markdown,Text,Vim,Markdown,我正在用vim对一个文件进行降价编辑。我正在尝试将其转换为带有代码高亮显示的标记,等等 - Arithmetic operators:`+,−,*, /` - Constants: `e`, `pi` - Functions: (abs x), (max x y... ), (ceiling x) (expt x y), (exp x), (cos x), ... 我想使用视觉模式仅选择以下中的偏执词(包括偏执词)中的内容(因此它们将由逗号分隔): (abs x),(max x y…)

我正在用vim对一个文件进行降价编辑。我正在尝试将其转换为带有代码高亮显示的标记,等等

- Arithmetic operators:`+,−,*, /`
- Constants: `e`, `pi`
- Functions: (abs x), (max x y... ), (ceiling x) (expt x y), (exp x),
    (cos x), ...
我想使用视觉模式仅选择以下中的偏执词(包括偏执词)中的内容(因此它们将由逗号分隔):

(abs x),(max x y…),(天花板x)(expt x y),(exp x),
(cos x),…

然后执行
S`
,在每段文本周围加上反勾。如果不选择每一个,然后重复执行
S`
,我怎么能做到这一点呢?

使用全局命令(假设'S``来自surround.vim):

(这会影响整个文件,一次只能进行一次更改。请使用
@:
重复此操作)

使用宏:

qqf(ysab`q
@q
重复,然后用
@

或替换为:

:substitute/([^)]\+)/`&`/g
使用全局命令(假设'S``来自round.vim):

(这会影响整个文件,一次只能进行一次更改。请使用
@:
重复此操作)

使用宏:

qqf(ysab`q
@q
重复,然后用
@

或替换为:

:substitute/([^)]\+)/`&`/g
我怎样才能做到这一点而不选择每一个,然后重复做S

这实际上是Vim中最有效的部分。在宏的帮助下:

互动版本:

/(.\{-})<CR>
qqysa)`nnq
@q
@@
@@
这会匹配一对括号,前面没有反勾号,因此在处理完所有匹配后,
n
就没有匹配,自然会中断循环

如果有人认为这很复杂。。。请注意,大多数普通编辑器无法做到这一点(因为这考虑了正确的括号嵌套,而我还没有看到一个具有足够强大的search-replace功能的编辑器能够完成它)

我怎样才能做到这一点而不选择每一个,然后重复做S

这实际上是Vim中最有效的部分。在宏的帮助下:

互动版本:

/(.\{-})<CR>
qqysa)`nnq
@q
@@
@@
这会匹配一对括号,前面没有反勾号,因此在处理完所有匹配后,
n
就没有匹配,自然会中断循环


如果有人认为这很复杂。。。请注意,大多数普通编辑器无法做到这一点(因为这考虑了正确的括号嵌套,而我还没有看到一个具有足够强大的search replace功能的编辑器能够完成它)。

我没有得到
qqysa)`nn@qq@q
。我以为你不能把一个宏放到另一个宏里<代码>qqq刚刚开始和停止录制宏。。。然后
qq
录制另一个,并播放?你能在回答中解释一下吗?你不能在另一个宏中记录一个宏,但你可以在宏定义中调用一个宏
qqq
只删除
“q
之前。这里不应该有必要,但重要的是,
@q
在录制时什么都不做;由于
q
是我的go to宏寄存器,我总是在循环之前清除它。herophant,我现在在手机上,当我有一个合适的键盘时,我会更详细地解释。虽然这可能会显示Vim的威力,但像我这样的初学者可能需要很长时间才能到达。哈哈。当你发布这个答案时,我甚至不知道宏是什么。谢谢。即兴使用这样的环并不简单。通常,如果有少量实例,我将只手动执行,因为正确编写循环所花费的时间将比手动执行要多。如果有很多,那么在编写循环之前,我将手动尝试一点,以找到正确的咒语放入循环中。然而,我正在使用
qqqq@qq@q
现在作为一个固定短语,我不需要考虑这一点,只需要考虑起作用的那一点。(显然,我也可以使用
qaqa@aq@a
,但那也不会从手指上流下来。)我不明白`nn@qq@q。我以为你不能把一个宏放到另一个宏里<代码>qqq刚刚开始和停止录制宏。。。然后
qq
录制另一个,并播放?你能在回答中解释一下吗?你不能在另一个宏中记录一个宏,但你可以在宏定义中调用一个宏
qqq
只删除
“q
之前。这里不应该有必要,但重要的是,
@q
在录制时什么都不做;由于
q
是我的go to宏寄存器,我总是在循环之前清除它。herophant,我现在在手机上,当我有一个合适的键盘时,我会更详细地解释。虽然这可能会显示Vim的威力,但像我这样的初学者可能需要很长时间才能到达。哈哈。当你发布这个答案时,我甚至不知道宏是什么。谢谢。即兴使用这样的环并不简单。通常,如果有少量实例,我将只手动执行,因为正确编写循环所花费的时间将比手动执行要多。如果有很多,那么在编写循环之前,我将手动尝试一点,以找到正确的咒语放入循环中。然而,我正在使用
qqqq@qq@q
现在作为一个固定短语,我不需要考虑这一点,只需要考虑起作用的那一点。(显然,我也可以使用
qaqa@aq@a
,但这也不会从手指上流下来。)