在vim中,如何将一个很长的行拆分为64个字符的较小行?

在vim中,如何将一个很长的行拆分为64个字符的较小行?,vim,vi,macvim,Vim,Vi,Macvim,我有一个非常长的字符集,大约1000个字符长,没有空格。我可以在vim中将它们整齐地分成64个字符的行吗。比如说, 我想转换如下字符串: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOgwPQvZf9l3WYA/+eMcjz+v/1aWrebfpVLCOMDPN/mvWpG5cufxirk9nmX1yqzeYoIyrXsJ2MfCLdidf3nZ6wmBkKXq8dk51fG7+NzuG15UWtsZSp4z2fbVMWhulcUtj39

我有一个非常长的字符集,大约1000个字符长,没有空格。我可以在vim中将它们整齐地分成64个字符的行吗。比如说,

我想转换如下字符串:

MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOgwPQvZf9l3WYA/+eMcjz+v/1aWrebfpVLCOMDPN/mvWpG5cufxirk9nmX1yqzeYoIyrXsJ2MfCLdidf3nZ6wmBkKXq8dk51fG7+NzuG15UWtsZSp4z2fbVMWhulcUtj39zXCPCqFqk/St+Gc2SKZOOLi6TuvlsJAPGVS+shJJXeCZPBRiqEQhXZE7zsVrKFCM2tFZp1RLE9TWB+LNYOYg6/KES+iVwjqY4CcVqKMA6frUC/7N/Q9U7pvJbZiMRh4ScdnyEzJMvcIJcItt/0piZCZyOaVIv15RVOG4b9E0BMgEEtOvVgD+tLqKus/fdWz/hdtyVjDIlc5mzQnl98TAgMBAAECggEBAJnWpZ/5rOD/1F0jFWgOZEnEgKqcFj2Opf6O/AgXmclEcZ7Ba/T6PzGJ2bgw8AJZkgvybrbw3dzKmNp6FkViyNV66KR99mvNDF3OePs105TCMA79i+am3sAGG/BbHjpliTXnlceVNIQQZJhv3QUQCCMmanZpEspyP1DE7SJMqak6hh+irTx9n1Z+Eh8ma3hZ0vTpy5w96eWOk2NRGOMrUikEMApsBxI1W4HkrG3WI0MlWnLLv/DyGbIwiqp3Q2l39vKO/S5K3A8NVOuHbOvqHrP96g3a4srozu34tzXIcghxwECNx5mpouw4/lo53Ybo8JiNcU8s8fEmY6ufLaL0BlkCgYEA7y3Y6yIWPN04sK9jPZ/8hc6XzpelmFkc6d7kRDxTv3dWsWZAgos8a2zsKBmVFXJ7Aq2aNx+nmGPnYxr24Mu65NDfrd+rki4HxTqO0tkL9KI66y4F+yd796tkdqkLSyu5u9eci6hNaGeaJaX3es3Mq0J2i9hQ793XWXyv6mRh3dUCgYEA3QkHbhwd6KuE0AtI6P1e9dBn7DQip8VuJjY78qbFAMVEwJsn/aBL5CbzScCiIs8/wsx30LgbLPmPbVd0kfjrb9/eLKdej6EyZkLgrIUKBxSpg1f86TTCz0F3RUEiGBPtvFpJHfMVFjXGktUAyBvJyDTZjSSq79h7IPb3j+lNdUcCgYBGGLK1HrVTuyXtKkm0etngQU7eXjVK8/r0U72kfeWxfIEs1qHbYIEhnreLfQvjUDza6RQEScOtdsIOmo12Dl9Exi5339CBs/nVBLds9e16Eb2gxUk9dTHwwQtdd2d27WautZ8MkxO0oIBdvklMdVohawYhMBFwaxy8/jz0Pd0szQKBgEZ0jFPCzp3NnmYaUsFBkjVUmuulqq5DtlqjyvQLyJv4RXQHgPXNVKOC7uXBa20hFrfnKQH0zWTGn7tAtz2YVKOyfkVJjFDIFyKVirwzJAEhyu686zcCxF4ABh6jJlT6dTsmpEvRohUUSxmen8MpaGZSwk3FNF+DZ6wYTM0olrIdAoGBAKMc/LEIxgqwpFIzxIsFj4lSaGwIWFimMSq/9gd9R60/gncaBearSXrNwVBHPqfZBFnGeLTiddD7F/x/LbcPip+Hj0/PFphAxWfPfgLrTl2cGf4975mJbny11WjD+WucpB3YsXoOjo+z4rX0g4JmRuM0XDFy/ef11BMMQ2wjBZ54
致:

感谢阅读。

Qa64lq16@a:w
Qa64l<enter>q16@a:w

这将记录一个宏,在别名
a
下向右移动64次后按enter键,并将运行该宏16次并保存文件。应该按照您的要求执行。

如果调用外部命令没有问题,您可以使用以下命令:

要在vim中应用该命令,可以对字符串进行可视化选择,然后:

:'<,'>!fold -w64 %
如果没有外部命令,这可能会起作用:

:.s#.\{64\}#&\r#g
从手册页:

替换中出现的符号(
&
)将替换为与RE匹配的字符串


它将限制设置为最大行长度,重新插入当前行,并将限制返回到默认值(我假设您使用默认值)

使用宏的另一种方式(不在Ex模式下输入):
qq64laq99@q
,您应该在此处按Enter键和Esc键。我认为它只适用于带有空格的文本,事实并非如此。最后一个命令
:.s#{64\}和\r#g
在没有第一个点的情况下会以相同的方式工作,即
:s#{64\}和\r#g
,因为在这两种情况下都只应用于当前行。对于具有多个长行的文件,在替换命令之前添加
%
,即
:%s.\{64\}&\r\35; g
:'<,'>!fold -w64 %
:.!fold -w64 %
:.s#.\{64\}#&\r#g
:set textwidth=64
gqgq
:set textwidth=0