#1 楼
可以将gq
或gw
运算符与运动命令结合使用。默认情况下,适用文本的格式设置是由Vim完成的,据我所知,它不会使各行对齐(您会得到空白的右边距)。另外,也可以使用外部程序(例如Linux上的fmt
命令)通过使用formatprg
设置进行指定来进行格式化。 。这将格式化当前段落,使光标保持在同一位置。我使用这种方式来确保仅格式化当前段落。编辑文本文件时,在文件开始处发出gwip
(普通模式)将格式化整个文本。作为一种好习惯,请确保在段落之间至少保留一个空白行。可以进行很多配置。首先,这里有一些相关帮助:
gwG
,:h gq
,:h gw
(格式选项),:h fo
(格式程序),:h fp
(可能选项的说明)。#2 楼
关于此主题,有一个很棒的VimCast。 :$ brew install par
# or
$ sudo apt-get install par
然后,由于您希望将列包装成80列:您可以像其他答案一样使用
par
运算符(例如gq
),它将使用Par代替Vim的内置格式器。 ::set formatprg=par\ -w80
#3 楼
来自:help usr_25
:JUSTIFYING TEXT
Vim has no built-in way of justifying text. However, there is a neat macro
package that does the job. To use this package, execute the following
command:
:runtime macros/justify.vim
This Vim script file defines a new visual command "_j". To justify a block of
text, highlight the text in Visual mode and then execute "_j".
因此,您所要做的就是运行
:ru macros/justify.vim
,然后键入
_j
来证明整个文件中的文本的正确性。不必每次都键入。)
注意:这不会为您添加换行符。您必须使用
ru macros/justify.vim
手动添加它们。为此,您还必须通过set textwidth=80
,并且(如果需要)通过设置
gq
-flag自动进行自动换行,将textwidth
(默认值为0)设置为所需值通过set formatoptions+=t
如果需要,可以在.vimrc中设置一个映射来为您完成全部操作:
nnoremap <C-j> gggqG_j
这将移至文件的开头(
t
),包装所有行(gg
直到gq
),然后G
修饰文本。评论
有关格式的详细信息,请参见:VIM用户手册-编辑格式化的文本
– Suuuehgi
15年4月3日在19:38
我刚刚发现非常有用的:set fo + = a选项可以自动重新格式化整个段落。看看:help fo-table有其他选择。这里还有一个不错的视频教程。
– Suuuehgi
2015年4月4日在8:26
+1是一个完全内置的解决方案。宏添加的_j映射似乎为我证明了整个文件的合理性,或者可以通过逐行可视选择进行限制。
–ches
16-4-10的5:06
我发现的一个小缺点是_j尝试拉伸每条选定的行,包括段落的最后一行(通常不应拉伸)。我希望它遵守:set fo + = w所采用的惯例,并且只拉伸以空格结尾的线条。
–马兰
20 Nov 11'在12:06
#4 楼
尽管nano的帮助程序将^J
命令称为“ Justify”,但实际上并不能证明文本的合理性,它会重新格式化文本,以在屏幕右边界之前(或在某些可配置的列处)打断行。您可以通过从
textwidth
设置变量:help 'textwidth'
在VIM中执行相同的操作:要插入的最大文本宽度。
较长的行将在空格后断开以达到此宽度。零值将禁用此功能。
这就是说:键入时,如果一行的长度超过
textwidth
个字符,则VIM会将行换行以使行长度小于或等于textwidth
。要执行此操作,选项formatoptions
必须包含字母t
。有关可用选项,请参见:help 'formatoptions'
和:help fo-table
,例如,您可能对c
选项感兴趣,以使带注释的格式生效。 t
,使用命令formatoptions
格式化当前光标位置和gw{motion}
之后的光标位置之间的文本。在可视模式下也可以使用{motion}
命令,它会格式化选定的文本。评论
这对打字很有好处。我可以将其应用于预先存在的文本吗?
– SF。
2015年2月6日在13:03
#5 楼
这是两个简单的选项:选中一个文本块,然后键入
!fmt
,将光标放在一个块的开头,键入
!}fmt
这两者都向uniq
fmt
发送文本块,有关选项,请参见man fmt
。您可以从vim传递选项参数。例如,要格式化50个字符宽的块,请键入!}fmt -w 50
。评论
抱歉,现在修复
– kaan
2015年12月6日在2:23
您也可以输入:%!fmt格式化整个文件,如果您不喜欢此结果,请使用单个u撤消。
–通配符
15年12月21日在22:26
#6 楼
使用视觉命令标记文本,然后使用::!par 40j
其中40是列宽,
j
表示对齐。评论
欢迎来到我们的网站!您的问题当前质量低下,因为它缺少有关您正在使用的工具(标准)以及解决方案为何起作用的解释。您可能需要添加更多详细信息,以提高答案的质量并使之对将来的读者更有用。
–statox♦
18年3月29日在9:57
评论
gq / gw绝对是必经之路。要添加到此消息,您可以更改格式程序以使其具有更多选项。结帐vimcasts.org/episodes/formatting-text-with-par
–班布
2015年2月6日在13:04
默认情况下,Vim不使用任何外部程序,尽管您可以通过设置'formatprg'选项选择使用一个外部程序。
–詹姆斯
2015年2月6日14:16