假设我在VIM编辑器中有超长行(比如大约300多个字符)。我如何将其分成多行,以便单词边界大致突破80个字符?
示例:
This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line
到
This is a really long line
This is a really long line
This is a really long line
This is a really long line
This is a really long line
This is a ...
答案 0 :(得分:233)
Vim非常容易(在单词边界处断行)。
gq{motion} % format the line that {motion} moves over
{Visual}gq % format the visually selected area
gqq % format the current line
...
我建议您查看:help gq
和:help gw
。
另外,设置textwidth(tw
)会在打字时超出时自动换行。它也在gq
中使用,但是如果禁用gq
则会在窗口大小上打破,或者79取决于哪个会先出现。
:set tw=80
通过设置格式选项以包含文字宽度,vim将在tw设置下自动中断。
:set fo+=t
答案 1 :(得分:79)
首先设置你的vim,使它理解你想要80个字符:
:set tw=80
然后,hilight the line:
V
并让vim重新格式化:
gq
答案 2 :(得分:17)
这与VIM无关,但您可以使用 fmt 程序,如
$ fmt myfile
答案 3 :(得分:10)
对于实线文本,在正常模式下使用v突出显示区域,然后按
:s/\v(.{80})/\1\r/g
这将在每个第80个字符的末尾添加换行符。
:s/ replaces within the current select
\v uses regular expressions
(.{80}) selects 80 characters & placed them into group one
\1\r replaces group one with group one and a newline
答案 4 :(得分:6)
如果你在* nix上,你可能有fold
。
使用v
选择您想要的区域,然后您可以使用以下方法中断宽度为80的空格:
!fold --spaces --width=80
这与使用gq
完全相同。
但是,如果你只是想在80字符处打破而不限于你可以使用的空格:
!fold --width=80
如果你只需要一次按键就可以设置映射 - 我已经使用了
vmap <f1> !fold --width=80<CR>
答案 5 :(得分:4)
我需要重新格式化整个文件而不是一行。正如Wernsey指出的那样,我可以使用'fmt',但vim中的以下序列也可以解决这个问题(借用这里的各种答案):
<ESC>
:setl tw=80 fo=t
1GVGgq
答案 6 :(得分:3)
快速而讨厌,也许可以尝试以下地图:
map q 080lwbels<CR><ESC>
说:
然后点击q和CR会将这一行分成单词边界上的块。
答案 7 :(得分:3)
要在整个文档中拆分长行而不删除已存在的换行符,请使用:
:set formatoptions+=w
:set tw=80
gggqG
答案 8 :(得分:0)
我在最后一个空格之后但在80列之前,在每个LONGLINE中手动插入了“ \”(然后使用CR /制表符进行格式化)。也就是说:
1 this is a long, long, line
现在看起来像
1 this is a long, \
long line
并正常编译。
答案 9 :(得分:0)
fmt在VIM中也可以很好地工作,并且将进行如下更改:
md5:A55B4EEB6FC24B2377A31A37C490D236 | sha1:BB4E344C5F271BF8B76B3FDC626A26627E97F453 | sha256:7A386ADBBF9CE26E892F044128F21C70B13695CE7931456C12868776BC680582 | sha512:DECB7B5B66FA5A272FDAB56CD4B6639CA216B30418E050C16A3821FE2FBF9B90C3DC35671AED44B0AE8C5471FCD6393D4955237E1497DF2CA2B427615FEE7B32
为了更有利 哈希:
|
它将哈希的类型,哈希数和管道依次放在各自的行上...
只需在视觉上选择所需的文本,然后:
!fmt -1
答案 10 :(得分:-1)
我手动将长行折断。我认为要点是按“ r”(正常模式)然后按。
这将删除光标所在的字符。因此,请记住在要换行的单词之前的空格处执行此操作,否则您将不得不插入丢失的字符。
我只是不知道如何折行并将其下移2行空间,以便在2行之间留出空间。