假设你有这个文本:
name1 = "John"; age1 = 41;
name2 = "Jane"; age2 = 32;
name3 = "Mike"; age3 = 36;
...
字符串
你想把每一行分成两行,给予这样的结果:
name1 = "John";
age1 = 41;
name2 = "Jane";
age2 = 32;
name3 = "Mike";
age3 = 36;
...
型
如何将此操作自动化?
一些注解:
1.我已经尝试了以下方法:
(1)选择虚拟视频中的文本,
(2)执行:'<,'>:norm ^3f r^M
*,
但是它不能正确工作;它只拆分了一半的行,因为在每一行被断开之后,下一次重复的命令将应用于断开的行的其余部分,而不是下一行!
1.这可以实现使用宏,但我正在寻找更优雅的解决方案。
- 序列说明:*
- -
norm
用于在正常模式下执行以下命令 * - -
^
用于将光标移动到行首 * - -
3f<space>
用于将光标移动到行中的第三个空格 * - -
r^M
用于将该空格替换为新行 *
2条答案
按热度按时间fbcarpbf1#
要对整个文件进行操作,请使用以下命令:
字符串
要对所选文本进行only操作,请使用以下命令:
型
英文翻译:
“* 将每次出现的 * 分号后跟空格 * 替换为 * 分号后跟换行符**。”
说明:
型
这是Vi中替换的基本方法。
更多Geekiness:
实际上,我在
.vimrc
文件中Map了以下内容,用于这种情况:型
此命令在最后一个搜索模式的第一个出现处拆分文件的每一行。
所以,对于你的用例,你会这样做:
1.搜索
;
(你可能想或不想包含一个空格......由你决定)1.在正常模式下键入以下命令:
SS
文件的每一行将在第一个
;
符号处拆分。为了澄清,您可以使用以下5个选项:
/; SS
这对于快速格式化XML、HTML等非常方便。
rbl8hiat2#
字符串
尾随的g使替换在一行中全局化。
型
当我发现这篇文章时,我正在解决的问题是在\n模式处分割行。我的解决方案是
型