gpt4 book ai didi

vim - 一种在 vim 中第一个和最后一个非白字之间居中文本的简单方法?

转载 作者:行者123 更新时间:2023-12-04 10:53:23 26 4
gpt4 key购买 nike

有没有一种简单的方法使用宏或 ~10 行函数(没有插件!)将一些文本放在一行上的第一个和最后一个单词(=非空白字符序列)之间?例如。转

        >>> No user serviceable parts below.               <<<

进入
        >>>       No user serviceable parts below.         <<<

通过平衡空间+/-1?您可以假设没有制表符并且结果不应该包含制表符,但请注意第一个单词可能不在第 1 列中开始。(编辑:...实际上,分隔符以及文本的开头和结尾要居中可能在任意列上。)

最佳答案

来源此功能:

fun! CenterInSpaces()
let l = getline('.')
let lre = '\v^\s*\S+\zs\s*\ze'
let rre = '\v\zs\s*\ze\S+\s*$'
let sp = matchstr(l,lre)
let sp = sp.matchstr(l,rre)
let ln = len(sp)
let l = substitute(l,lre,sp[:ln/2-1],'')
let l = substitute(l,rre,sp[ln/2:],'')
call setline('.',l)
endf

备注
  • 此功能可能 不是 在所有情况下工作。我只是为通常的情况快速写了它。这毕竟不是插件
  • 通过组合函数调用可以减少代码行。但我认为这样很清楚,所以我就这样离开了。
  • 如果它对你有用,你可以创建一个 map
  • 它是这样工作的:(最后两行我输入 @: 重复 cmd 调用)

  • enter image description here

    关于vim - 一种在 vim 中第一个和最后一个非白字之间居中文本的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833436/

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