在 Vim 中,如何将一个长字符串按一个字符分成多行?

     2023-03-04     59

关键词:

【中文标题】在 Vim 中,如何将一个长字符串按一个字符分成多行?【英文标题】:In Vim how do I split a long string into multiple lines by a character? 【发布时间】:2013-05-26 21:16:13 【问题描述】:

我有这么长的正则表达式字符串

(\.#.+|__init__\.py.*|\.wav|\.mp3|\.mo|\.DS_Store|\.\.svn|\.png|\.PNG|\.jpe?g|\.gif|\.elc|\.rbc|\.pyc|\.swp|\.psd|\.ai|\.pdf|\.mov|\.aep|\.dmg|\.zip|\.gz|\.so|\.shx|\.shp|\.wmf|\.JPG|\.jpg.mno|\.bmp|\.ico|\.exe|\.avi|\.docx?|\.xlsx?|\.pptx?|\.upart)$

我想将其拆分为| 并将每个组件放在一个新行上。

所以最终的形式是这样的

(\.#.+|
__init__\.py.*|
\.wav|
\.mp3|
\.mo|
\.DS_Store|
... etc

我知道我可能可以将其作为宏来执行,但我认为更聪明的人可以找到更快/更简单的方法。

感谢任何提示和帮助。谢谢!

【问题讨论】:

选择行和'<,'>s/|/|\r/g? 哦,我不知道你可以用\r添加换行符。 相关回答here... How to replace a character for a newline in Vim?的可能重复 【参考方案1】:

用它自己和换行符 (\r) 替换 | 的每个实例:

:s/|/|\r/g

(在执行之前确保您的光标在相关行上)

【讨论】:

与原问题或答案无关,但为什么是\r而不是\n @Aperçu 我没有研究为什么,但是在 VIM 中你必须使用\r作为替换字符,它会为底层操作系统做正确的事情。如果您使用\n 作为替代品,结果将不会是人们所期望的。 @Apalala 这是对您问题的回答,而不是问题;) @Apalala 见Why is \r a newline for Vim? @Aperçu 不错。我认为您的 8.5k 允许您编辑答案;-)【参考方案2】:

试试这个:

:s/|/|\r/g

以上将适用于当前行。

要对整个文件执行替换,请在 s 之前添加 %

:%s/|/|\r/g

细分:

:    - enter command-line mode
%    - operate on entire file
s    - substitute
/    - separator used for substitute commands (doesn't have to be a /)
|    - the pattern you want to replace
/    - another separator (has to be the same as the first one)
|\r  - what we want to replace the substitution pattern with
/    - another separator
g    - perform the substitution multiple times per line

【讨论】:

我的也是;没有解释...`:` @AndrewMarshall - 也许我们的回答有效...我已经为你投票了 :-)【参考方案3】:

实际上你不必在模式之前添加|,试试这个s/,/,\r/g它将在换行符后用逗号替换逗号。

【讨论】:

在 vim 中,如何进行自定义单词边界运动?

】在vim中,如何进行自定义单词边界运动?【英文标题】:Invim,howdoImakeacustomwordboundarymotion?【发布时间】:2012-03-2109:37:06【问题描述】:据我了解,w通过将文本分成3组来识别单词边界:1)在iskeyword设置中指定的字符(字母、数... 查看详情

在 vim 中移动到该行的第一个非空白字符

】在vim中移动到该行的第一个非空白字符【英文标题】:Movingtothefirstnon-blankcharacterofthelineinvim【发布时间】:2018-03-0405:00:47【问题描述】:我在vim中移动到一行的第一个非空白字符时遇到了一些麻烦。此操作的通常映射是^,但... 查看详情

vim学习1

...号上,按%可将光标移至匹配括号处。/string查找全文本的字符串,按n可将光标移动至下一个字符串首字母处;?string查找全文本的字符串,按n可将光标移动至上一个字符串首字母处; *匹配光标当前所在的单词,按n可将光标... 查看详情

如何在vim中删除N行中的第一个字符?

】如何在vim中删除N行中的第一个字符?【英文标题】:HowdoIremovethefirstcharacterinNlinesinvim?【发布时间】:2015-11-2807:09:23【问题描述】:当我粘贴到vim时,我经常在我粘贴的每一行的开头得到一个#字符。有没有一种简单的方法可以... 查看详情

如何在vim/vi中快速查找和替换文本内容

...,则仅替换当前行中找到的模式。例如,要搜索当前行中字符串“foo”的首次出现,并将其替换为“bar”,可以使用:要替换当前行中搜索到的所有内容,可以添加g标志:如果想搜索和替换整个文件中的匹配内容,使用百分比... 查看详情

Python在文本文件中保存长字符串

】Python在文本文件中保存长字符串【英文标题】:PythonSavinglongstringintextfile【发布时间】:2016-06-2517:48:14【问题描述】:我有一个长字符串,我想用代码保存在一个文本文件中:taxtfile.write(a)但是因为字符串太长,保存的文件打... 查看详情

如何将字符串日期转换为长毫秒

】如何将字符串日期转换为长毫秒【英文标题】:HowtoconvertastringDatetolongmillseconds【发布时间】:2012-09-1012:18:33【问题描述】:我在字符串中有一个日期,例如“2012年12月12日”。如何将其转换为毫秒(长)?【问题讨论】:【参... 查看详情

在linux系统的vim中如何写入?

...移动N行。查找和替换:/word:向下寻找一个名称为word的字符串。?word:向上寻找一个名称为word的字符串。:n1,n2s/word1/word2/g:在第n1行和n2行之间寻找word1这个字符串,并且将其替换为word2.:1,$s/word1/word2/g:从第一行到最后一行寻找w... 查看详情

如何将一个大数组按照里面相同的数据拆分成多个子数组

...de<string.h>intmain()charinput[16]="abc,d,ef,g";//待分解字符串char*delim=",";//分隔符字符串char*p=strtok(input,delim);//第一次调用strtokwhile(p!=NULL)//当返回值不为NULL时,继续循环printf("%s\n",p);//输出分解的字符串p=strtok... 查看详情

bash:如何将字符串添加到 stderr 行并按确切顺序组合 stdout 和 stderr 并存储在 bash 中的一个变量中?

】bash:如何将字符串添加到stderr行并按确切顺序组合stdout和stderr并存储在bash中的一个变量中?【英文标题】:bash:Howtoprependastringtostderrlinesandcombinebothstdoutandstderrinexactorderandstoreinonevariableinbash?【发布时间】:2016-08-1421:53:47【问题... 查看详情

如何在视图中将 ntext 字段显示为长字符串?

】如何在视图中将ntext字段显示为长字符串?【英文标题】:HowcanIdisplayanntextfieldasalongstringinaview?【发布时间】:2011-11-1513:25:13【问题描述】:我们有一个使用SQL视图来生成报告的系统。这将导出为CSV。我正在处理一个表格,其... 查看详情

如何在PHP中按字符将数组拆分为关联数组[重复]

...问题描述】:我已经构建了一个程序,该程序从一个充满字符串的数组中获取数据,并将数据转换为适当格式化的数组。这是原始数组:$arr=array("action:Added;quantity:1;it 查看详情

vim|基础命令(代码片段)

...模式(按i键进入)左下角显示--INSERT--可视模式(不知道如何进入)左下角显示--VISUAL--普通模式文件命令vimfile打开单个文件vimfile1file2file3...同时打开多个文件导航命令%括号匹配<C-o>向后跳转文件<C-i>向前跳转文件插入命... 查看详情

如何在 Vim 的每一行末尾添加一个字符串?

】如何在Vim的每一行末尾添加一个字符串?【英文标题】:HowcanIaddastringtotheendofeachlineinVim?【发布时间】:2010-10-1007:34:53【问题描述】:我想在Vim的每一行末尾添加*。我试了代码不成功:%s/\\n/*\\n/g【问题讨论】:你的不起作用,... 查看详情

使用vim按十六进制代码搜索(代码片段)

...行的xml解析器,由于文件中的转义字符(0x1B)而失败。如何使用vim查找文件中该字符的位置,以便将其删除?示例文件:<?phpecho"Hello,world.";?>转换后:0000000:0a3c3f7068700a6563686f202248656c.<?php.echo"Hel0000010:6c6f2c20776f726c642e5c6e223b0a... 查看详情

c++如何将一个字符数组分割成几个数组?

...逗号什么的,则即可以循环里面一个个判断字符,也可以字符串搜索,比如用strrchr、strstr搜索,也可以用strtok按token分割。③按关键字符或字符串,也可以用②中提到的方式先搜索,后定位,然后分割。还有这个是纯C呢?还是C+... 查看详情

如何在ios中动态生成多页pdf时处理分页

】如何在ios中动态生成多页pdf时处理分页【英文标题】:Howtohandlepaginationingeneratingmultiplepagepdfiniosdynamically【发布时间】:2013-01-2012:36:43【问题描述】:我使用以下代码生成pdf文件及其内容。最初,我设计了pdf内容,通过将cgpoint... 查看详情

初学者提问:vim编辑器的三种模式如何切换?

...vim有三种模式:command模式,Insert模式,Visual模式,请问如何切换呀?很简单的,会用esc就行了,刚开始vim文件的模式就是基本的模式,可以移动光标,查看文件,按i进入插入模式,就可以写东西了,然后按esc退到基本模式,按c... 查看详情