强制 Vi/Vim 仅在重新制表时使用前导制表符!
有没有办法强制vim使用制表符进行初始缩进,但是在运行重新制表符时!命令不使用制表符替换内部字间距?
Is there a way to force vim to use tabs to do the initial indent, but when running the retab! command NOT replace inner word spacing with tabs?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据我的经验,执行此操作的最佳方法是使用自定义函数:
然后您可以使用:
将所有前导空格替换为制表符,但不影响其他字符之后的制表符。它假设“ts”设置正确。通过执行以下操作,您可以在很大程度上使未对齐的文件变得更好:
您最终会得到一个文件,其中所有前导空白都是制表符,这样人们就可以以他们想要的任何格式查看它,但是所有的尾随空白是空格,以便所有行尾注释、表格等与任何制表符宽度正确对齐。
编辑
“exe”行的说明:
In my experience the best way to do this is with a custom function:
You can then use:
to replace all leading spaces as tabs but not to affect tabs after other characters. It assumes that 'ts' is set correctly. You can go a long way to making files that are misaligned better by doing something like this:
You'll end up with a file where all the leading whitespace is tabs so people can look at it in whatever format they want, but where all the trailing whitespace is spaces so that all the end-of-line comments, tables etc line up properly with any tab width.
Edit
Explanation of the 'exe' line:
根据我对另一个 (*) 问题的回答:
比您需要使用
@:
或10@:
重新进行搜索,下面的链接有更好的解释。
(*)
如何将空格转换为Vim 或 Linux 中的选项卡?
From my answer to this other (*) question:
Than you need to redo the search with
@:
or10@:
Its better explained in the link bellow.
(*)
How can I convert spaces to tabs in Vim or Linux?