我不确定这是否可行,但 Vim 不断给我带来惊喜。我希望能够做的是采用一个文本块的格式并将其应用于选择。假设有几行是这样的:
<li><a href="#"><span>Something Here</span><i class="icon"></i></a></li>
<li><a href="#"><span>Something Here</span><i class="icon"></i></a></li>
<li><a href="#"><span>Something Here</span><i class="icon"></i></a></li>
我想格式化其中一行:
<li>
<a href="#">
<span>Something Here</span>
<i class="icon"></i>
</a>
</li>
然后将该格式应用于其余行。再说一遍,不知道这是否可行,但如果可以的话那就非常简洁了 - 我经常必须实现 HTML 模板,其中有很长的行,其中可能有 5 或 6 个嵌套标签,通常以非常明显的缩进开始在那里。
你知道vim的录音功能吗?尝试执行以下操作:
q
+ some character
进入录音模式q
退出录音模式@
+ some character
重现记录的操作使用示例输入的宏来执行此操作的方法是,使用以下命令添加宏,并使用
@i
在一行上运行它,或使用 {motion}@i
在多行上运行它,即按 3@i
在 3 行上运行它它会缩进所有 3 行。
:let @i='0f<i^M^[>>;i^M^[>>;;i^M^[;;;i^M^[<<;i^M^[<<+'
说明:
0
:移至行首f<
:先找到<
i^M^[
: 进入插入模式,插入换行符并返回命令模式。>>
:缩进行;
:查找下一个<
i^M^[
:重复步骤3<<
:取消行缩进+
: 移动到下一行的第一个非空白字符作为替代方案,通过
haml
使用
html2haml
和
:!
命令过滤内容
:%!html2haml -s | haml -q -s
通过
gem install haml
和 gem install html2haml
安装 gem
有关过滤器的更多帮助,请参阅
:h :range!
如果输入与第一篇文章中显示的一样规则,您可以使用像这样的正则表达式:
:%s/\(<a.\{-}>\)\(<span.\{-}\/span>\)\(<i.\{-}\/i>\)\(<\/a>\)/\r \1\r
\2\r \3\r \4\r/g
解释是,您将每组代码分开
\(..\)
,然后在替换部分,在每个代码之前添加一些空格。