VIM可以做这个Sublime技巧吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VIM可以做这个Sublime技巧吗?相关的知识,希望对你有一定的参考价值。
我想编辑此文本:
Aenean vel sem bibendum, eleifend odio a, dictum nibh.
The third word in the above line is
Morbi eget est vitae quam ultricies porta vitae quis nunc.
The third word in the above line is
Praesent accumsan ex a laoreet cursus.
The third word in the above line is
Quisque efficitur lectus at dolor mollis, sit amet tristique libero lobortis.
The third word in the above line is
到本文:
Aenean vel sem bibendum, eleifend odio a, dictum nibh.
The third word in the above line is sem
Morbi eget est vitae quam ultricies porta vitae quis nunc.
The third word in the above line is est
Praesent accumsan ex a laoreet cursus.
The third word in the above line is ex
Quisque efficitur lectus at dolor mollis, sit amet tristique libero lobortis.
The third word in the above line is lectus
用Sublime做到这一点
Select repeated part
ALT+F3
UpArrow
HOME
3 x CTRL+RightArrow
CTRL+Shift+LeftArrow
CTRL+C
DownArrow
END
CTRL+V
在许多情况下,这个技巧非常有用。 VIM能做到吗?
答案
它应该可以轻松地与宏。如果您将光标放在第一行的第一个字符上,那么:
qq
:开始录制名为q
的宏
2w
:提前两个字
yw
:yank(复制)字
j$
:跳到下一行并走到最后
p
:粘贴你所拉的东西
+
:开始下一行
q
:停止录制宏。
3@q
:执行3次名为q
的宏
另一答案
作为宏解决方案的替代方案,您还可以使用替换命令
:%s/vis $zs/=split(getline(line('.')-1), ' ')[2]
分解
:%s/ start a substitute command
vis $zs/ select lines ending with "is "
use zs to start replacing after the match
=split(getline(line('.')-1), ' ')[2] split previous line on spaces and use the 3th item from the list
请注意,要将此作为一般模板使用必须保持
- 您需要一个搜索条件才能匹配您想要更改的行。对于你的例子,这是
is $
- 您需要能够在有意义的事物上拆分前一行,并在每个替换的相同阵列位置返回您需要的项目。例如,这是通过拆分空间并返回第3个项目。
另一答案
另一个vim解决方案:
:g/^/if line('.') % 2 | normal! wwyiwj$p | endif
g .................. globally
/^/ ................ on every start of line
if
line('.') % 2 ...... Mod of the integer division of line number by 2
normal! ............ normal mode
ww ................. jump to the third word
yiw ................ yank inner word (word under cursor)
j .................. go to the line below
$ .................. jump to othe end of the line
p .................. paste
以上是关于VIM可以做这个Sublime技巧吗?的主要内容,如果未能解决你的问题,请参考以下文章