我有以下文字:
select region_id, 'Males_Negative_Nil_income_Age_15_19_years' as category, Males_Negative_Nil_income_Age_15_19_years as number from income_mf_pivot
union
select region_id, 'Males_Negative_Nil_income_Age_20_24_years' as category, Males_Negative_Nil_income_Age_20_24_years as number from income_mf_pivot
union
select region_id, 'Males_Negative_Nil_income_Age_25_34_years' as category, Males_Negative_Nil_income_Age_25_34_years as number from income_mf_pivot
union
select region_id, 'Males_Negative_Nil_income_Age_35_44_years' as category, Males_Negative_Nil_income_Age_35_44_years as number from income_mf_pivot
我想要完成的事情(我通过选择推测)是
Males_Negative_Nil_income_Age_15_19_years,
Males_Negative_Nil_income_Age_20_24_years,
Males_Negative_Nil_income_Age_25_34_years,
Males_Negative_Nil_income_Age_35_44_years
我认为选择(用它来选择两者之间的所有内容)就像/ g一样,然后以某种方式猛拉它,但我已经没有用了。
我不是一个纯粹的纯粹主义者。我不介意它是不止一个命令。我在此之后可以在整个文档上运行。
答案 0 :(得分:2)
您可以将光标放在第一个M上,然后使用CTRL-v
开始阻止视觉模式,移动到您希望用6je
拉出的另一端并用{{1}猛拉它}。
这确实会使空行线猛拉,但一旦粘贴它们就应该很容易摆脱。
另一种方式,也会附加逗号,就是使用像y
这样的外部过滤器:
sed
这导致
:r!sed -n "s/.*'\(Males[^']*\).*/\1,/p" %
答案 1 :(得分:2)
yi'
命令允许您在单引号之间移动文本,但这仅适用于单个实例。
只要宽度相同(即你有一个矩形选择),就可以使用 blockwise visual mode ,以<C-v>
开头(在Windows上经常是<C-q>
)
要获取单引号内的所有文字,您可以使用我的ExtractMatches plugin。它提供以下命令:
:%YankMatchesToReg /'\zs[^']\+\ze'/
之后,您只需p
即可查看文本并添加尾随逗号。如果所有匹配项都在一行中,则UnconditionalPaste plugin中的g,p
可以一次性完成。
答案 2 :(得分:2)
我将假设每个目标行中只有两个单引号,如示例文本中那样。
我会在可视模式下选择所需的行,然后使用:进入Ex模式。范围''&lt;,'&gt;' (代表视觉选择)将自动插入。我会把它完成到
:'<,'>v/'.*'/d
(删除所有不包含两个'字符的行)以删除“union”行。然后 g v :重新选择Visual选择,并完成命令行
:'<,'>s/^[^']*'\|'.*//g
:'<,'>-s/$/,
或者也许,而不是那两个命令,
:'<,'>s/.*'\(.*\)'.*/\1,
然后从最后一行删除,。
答案 3 :(得分:1)
选择
Males_Negative_Nil_income_Age_15_19_years
来自
select region_id, 'Males_Negative_Nil_income_Age_15_19_years' as category, Males_Negative_Nil_income_Age_15_19_years as number from income_mf_pivot
使用vi'
(选择内部单引号)
请:help object-select
阅读相关内容