gpt4 book ai didi

vim - 在 Vim 中的代码块周围制作一个 ascii 框

转载 作者:行者123 更新时间:2023-12-04 21:03:01 24 4
gpt4 key购买 nike

是否可以在代码块周围创建一个 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))), ';'], '')

    注意 我首先选择了一个视觉 block 。

    它的问题
  • 它将'-' 字符添加到每一行,而不是第一行和最后一行
  • 它从第一行开始,到最后一行结束,我更喜欢它在所选行之前和之后有一个 block 。
  • 尾随空格不会被删除。
  • 因为我启用了搜索突出显示,它会在操作后突出显示整个视觉 block 。

  • 这是它的外观:
      ;; 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>在视觉模式下,跳到我们之前选择的末尾并添加一个带有分号的换行符。 '>o;<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 ;
    ;-------------------------------------------------;

    显然,为了方便起见,您可能希望将其包装在映射、函数或宏中。

    关于vim - 在 Vim 中的代码块周围制作一个 ascii 框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39642654/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com