是否可以在代码块周围创建ASCII注释框?
> ASCII框应足够智能,以扩展框周围
最大代码宽度.但它也应该清除任何尾随空格.
>注意,它不应该在代码的开头有一个列行.
>在我下面的代码中,;是评论字符.
>代码块可能包含注释行.
>工作流程可能是
>以可视模式选择代码块
>应用更改.
这是一个例子.
之前
; Convert to radians theta45 = (theta + 45.)/!RADEG theta90 = (theta + 90.)/!RADEG theta = theta / !RADEG Ey = Ey * normal ; Engineering shear strain Gxy = shear * Exy
后
; -----------------------------------------; ; Convert to radians ; theta45 = (theta + 45.)/!RADEG ; theta90 = (theta + 90.)/!RADEG ; theta = theta / !RADEG ; Ey = Ey * normal ; ; ; Engineering shear strain ; Gxy = shear * Exy ; ; -----------------------------------------;
到目前为止我尝试过的
'<,'>s/^\(\s*\)\(.*\)$/\=join([submatch(1),';',submatch(2),repeat('-',50-len(submatch(1)) - len(submatch(2))),';'],'')
注意我首先选择了一个视觉块.
问题
>它为每一行添加’ – ‘字符,而不是第一行和最后一行
>它从第一行开始,以最后一行结束,我更喜欢在所选行之前和之后有一个块.
>不删除尾随空格.
>因为我启用了搜索高亮显示,所以它会在操作后突出显示整个视觉块.
以下是它的外观:
;; Convert to radians ------------------; ;theta45 = (theta + 45.)/!RADEG------------------; ;theta90 = (theta + 90.)/!RADEG------------------; ;theta = theta / !RADEG ------------------; ;Ey = Ey * normal ------------------; ;--------------------------------------------------; ;; Engineering shear strain ------------------; ;Gxy = shear * Exy ------------------------;
虽然,它并不是我想要得到的.我只能走到这一步!
感谢您的阅读和帮助.
解决方法
这个怎么样:
<esc>'>o;<esc>'<O;<esc>v'>j:norm 51A <C-v><esc>51|Dr;<cr>:'<s/ /-/g<cr>:'>&&<cr>
说明:
首先,我们需要添加额外的行.所以我们< esc>视觉模式,跳到我们之前选择的结尾并添加一个带分号的换行符. “>○;< ESC取代.然后,跳回上一个选择的开头,并向上添加一个带分号的换行符’< O;< esc>.现在,我们需要在此行上启动可视模式,跳转到上一行,再一行v’> j.现在,缓冲区看起来像这样:
; Here are a whole bunch of uneven lines ;
它都是视觉选择的.然后,我们需要将每一行填充到50个空格.所以,
:norm 51A <C-v><esc>51Dr;
首先添加51个空格,然后跳转到第51列,删除到最后,并用分号替换50.现在我们的缓冲区如下所示:
; ; Here ; are ; a whole bunch of ; uneven ; lines ; ; ;
现在,我们只是在选择的开头用空格替换破折号:
:'<s/ /-/g<cr>
并在选择结束时执行相同的替换:
:'>&&<cr>
现在缓冲区看起来像这样:
;-------------------------------------------------; ;Here ; ;are ; ;a whole bunch of ; ;uneven ; ;lines ; ;-------------------------------------------------;
显然,为了方便起见,您可能希望将其包装在映射,函数或宏中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。