#1 楼
您可以使用命令:s/\s\+/\r/g
简单地用换行符替换行上的任何连续空格。 \s\+
表示一个或多个空格字符,而\r
是换行符,有关详细信息,请参见:help :substitute
和:help regexp
。如果在以下行上运行命令:foo bar baz
您将得到:
foo
bar
baz
如果有启用了
hlsearch
,并且您不想在屏幕上到处都有突出显示的空格,可以编写类似于以下内容的小功能来避免它:function! SplitLineNicely()
" Save previous value of last search register
let saved_last_search_pattern = @/
" :substitute replaces the content of the search register with the `\s\+`
" pattern highlighting all whitespaces in the file
substitute /\s\+/\r/g
" Restore previous search register
let @/ = saved_last_search_pattern
endfunction
评论
“如果您不想让屏幕上到处都有突出显示的空间而使画面杂乱无章”,则可以认为OP的设置太多了。
– romainl
15年2月13日在15:26
@romainl更好吗?
–toro2k
15年2月13日在15:28
是的,最好是IMO。
– romainl
15年2月13日在15:42
它是\ r,请参见:help s / \ r。可以用键入
–toro2k
2015年2月13日在16:09
替换寄存器的内容-哪个寄存器?
–stillanoob
19年5月1日在11:49
#2 楼
使用vim
的替换可能是完成任务的更好方法之一,但是您也可以使用宏。假设我们有以下数据,光标位于第1行的某处:1 a b c d e f
~
从正常模式开始,按qq将开始记录可通过@q调用的宏。在qq之后键入的任何内容都可以通过上述调用重复进行。我们的目标是记录足够通用的常规命令,以实现无缝重复。
因此,我们可以输入0将光标移至行首,然后输入fspace将光标移至第一个空格。这样,我们便可以键入renter,结果是:现在,由于我们的可重用宏已准备好重复,因此击中q现在是个好主意。随意地,我们注意到还剩下4个空格以换行符代替。因此,通过点击4 @ q,我们将
q
宏重复了4次,结果是:1 a
2 b c d e f
~
请注意,由于设置宏的方式不同,可以安全地重复执行该命令超过9000次,因为它只会影响当前行,并且由于最后一个数据条目的右边没有空格,因此fspace会“非常”失败,从而防止用换行符替换数据。 br />
所以从头开始重复一下:
qq0fspacerenterq9001 @ q
提供了我们的结果。
评论
我喜欢您的键盘上有9001键,可快速输入用户名。
–丰富
19年5月2日,12:24
#3 楼
我发现在Vim中拆分行的最简单方法是普通模式命令gq
(在普通或可视模式下快速连续键入两个字母)。在可视模式下,它将拆分所选内容,在正常模式下,您要跟随
gq
动作。例如,gql
会将一行分割为当前设置的宽度。要将分隔线的宽度设置为与当前设置不同,可以使用:set textwidth=n
,其中n
是一行中想要的字符数,例如10
,并在完成后更改回正常宽度。 从Kholidfu的Youtube视频中获取了此信息,该视频演示了如何使用运动在普通模式下合并和分割线。
评论
另请参见superuser.com/a/1564180/73961