加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Vim:缩进一个空格(不是shiftwidth空格)

发布时间:2020-12-15 19:59:27 所属栏目:安全 来源:网络整理
导读:默认的VIM缩进命令由shiftwidth空格缩进 例如 Indent line by shiftwidth spaces De-indent line by shiftwidth spaces 有没有任何方式缩进一个或n(其中n!= shiftwidth)空格? 一种方法是使用Ctrl V垂直选择块中的列,然后垂直插入,然后键入空格和 我不知
默认的VIM缩进命令由shiftwidth空格缩进

例如

>>   Indent line by shiftwidth spaces
<<   De-indent line by shiftwidth spaces

有没有任何方式缩进一个或n(其中n!= shiftwidth)空格?

一种方法是使用Ctrl V垂直选择块中的列,然后垂直插入,然后键入空格和

我不知道有没有更好的方法。但是,有几种方法可以做到(无论如何我都可以想到)…

您的视觉块解决方案

像你说的:按Ctl-V选择你想要的行,按I插入,然后输入空格。

搜索

与上述类似,但更灵活一点 – 您可以使用’select paragraph’vip命令,或任何范围真的:按v或vip或您有什么要选择范围,以及类型:s / ^ / { n spaces}其中{n spaces}是要插入的空格数。

它有点更冗长,但几乎任何范围的工作相当不错。哎,如果你想做整个文件,你可以做Ctl-A或你有什么(依赖于操作系统)和缩进整个文件(或者只是跳过整个视觉模式的事情,只是做它的命令模式,如: 1,$ s / ^ / {n spaces}

请注意,您不必在s ///中包含第三个斜杠,因为您最后没有放置任何标签。

全球

也许你只想要匹配一些模式的缩进行。说…所有包含foo的行。没问题:类型:g / foo / s / ^ / {n spaces}

如果它的多线段具有相似的模式,Global就非常方便。您可以直接进入正常模式的地区,并选择所需的行并相应缩进::g / foo / norm Vjj:s / ^ / {n spaces} Ctl-V {Enter}。稍微复杂一点,额外的Ctl-V {Enter}在结尾,但在某些情况下有用。

使用tabstop和shiftwidth

是的,如果你做的很多 – 我会做:set ts = 2和:set et和:set sw = 2并使用>>和<每一种方式... 做一个功能 好的,所以还是不够简短,无论什么原因,你需要做很多,你不能在sw,et和ts的设置上混乱。没问题,只需写一个快速的功能,并给它一个localleader映射:

function! AddSpace(num) range
  let s:counter = 0
  let s:spaces = ''
  while s:counter < a:num
    let s:spaces .= ' '
    let s:counter = s:counter + 1
  endwhile
    execute a:firstline .','. a:lastline .'s/^/'. s:spaces
endfunction

:map <LocalLeader>i :call AddSpace(3)Ctl-V{enter}

也许只是知道多于一种方式做到这一点比只知道一个更好?毕竟,有时最好的解决方案取决于问题:)

http://stackoverflow.com/questions/9287813/vim-indent-with-one-space-not-shiftwidth-spaces

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Vim:缩进一个空格(不是shiftwidth空格)

我不知道有没有更好的方法。但是,有几种方法可以做到(无论如何我都可以想到)…

您的视觉块解决方案

像你说的:按Ctl-V选择你想要的行,按I插入,然后输入空格。

搜索

与上述类似,但更灵活一点 – 您可以使用’select paragraph’vip命令,或任何范围真的:按v或vip或您有什么要选择范围,以及类型:s / ^ / { n spaces}其中{n spaces}是要插入的空格数。

它有点更冗长,但几乎任何范围的工作相当不错。哎,如果你想做整个文件,你可以做Ctl-A或你有什么(依赖于操作系统)和缩进整个文件(或者只是跳过整个视觉模式的事情,只是做它的命令模式,如: 1,$ s / ^ / {n spaces}

请注意,您不必在s ///中包含第三个斜杠,因为您最后没有放置任何标签。

全球

也许你只想要匹配一些模式的缩进行。说…所有包含foo的行。没问题:类型:g / foo / s / ^ / {n spaces}

如果它的多线段具有相似的模式,Global就非常方便。您可以直接进入正常模式的地区,并选择所需的行并相应缩进::g / foo / norm Vjj:s / ^ / {n spaces} Ctl-V {Enter}。稍微复杂一点,额外的Ctl-V {Enter}在结尾,但在某些情况下有用。

使用tabstop和shiftwidth

是的,如果你做的很多 – 我会做:set ts = 2和:set et和:set sw = 2并使用>>和<每一种方式... 做一个功能 好的,所以还是不够简短,无论什么原因,你需要做很多,你不能在sw,et和ts的设置上混乱。没问题,只需写一个快速的功能,并给它一个localleader映射:

function! AddSpace(num) range
  let s:counter = 0
  let s:spaces = ''
  while s:counter < a:num
    let s:spaces .= ' '
    let s:counter = s:counter + 1
  endwhile
    execute a:firstline .','. a:lastline .'s/^/'. s:spaces
endfunction

:map <LocalLeader>i :call AddSpace(3)Ctl-V{enter}

也许只是知道多于一种方式做到这一点比只知道一个更好?毕竟,有时最好的解决方案取决于问题:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读