在VIM中删除多行上的空格

在VIM中删除多行上的空格,vim,macvim,Vim,Macvim,为了缩进HAML代码,我通常添加或删除2个空格。加上我有: 进入视觉模式(ctrl+v) jj来选择行 shift+i以进入插入 第2类空间 电子稳定控制系统 就是这样,添加了两个空格。但是,要删除空格,我不工作,例如: 进入视觉模式(ctrl+v) jj来选择行 shift+i以进入插入 删除2个空格(带退格或删除) 电子稳定控制系统 这不起作用,其他行和空格不会被删除。那我怎么做呢 下面是一个示例代码: .module_1 .pricing_details %h2

为了缩进HAML代码,我通常添加或删除2个空格。加上我有:

  • 进入视觉模式(ctrl+v)
  • jj来选择行
  • shift+i以进入插入
  • 第2类空间
  • 电子稳定控制系统
  • 就是这样,添加了两个空格。但是,要删除空格,我不工作,例如:

  • 进入视觉模式(ctrl+v)
  • jj来选择行
  • shift+i以进入插入
  • 删除2个空格(带退格或删除)
  • 电子稳定控制系统
  • 这不起作用,其他行和空格不会被删除。那我怎么做呢

    下面是一个示例代码:

    
     .module_1
         .pricing_details
           %h2
             Save
    
    想法是移动所有物体,使其分别与模块_1中的2个空间相匹配,如下所示:

    
     .module_1
       .pricing_details
         %h2
           Save
    
    使用<>的建议解决方案仅适用于缩进,例如:

    
     .module_1
       .pricing_details
         %h2
           Save
    
    将上述内容移至:

    
     .module_1
     .pricing_details
       %h2
         Save
    

    突出显示文本并执行以下操作:

    <
    
    重复该操作多次。请注意,这将移动文本,无论移动宽度是多少。如果不是2,可以通过执行以下操作将其设置为2:

    :set sw=2
    
    您可以使用“>”以相同的方式缩进文本

    所有这些都在文档中:

    Try命令。您需要
    :设置shiftwidth=2
    ,以便它们以这种方式工作


    更新

    考虑到你的最后一个例子,改变

    .module_1
      .pricing_details
        %h2
          Save
    
    到⇓

    .module_1
    .pricing_details
      %h2
        Save
    
    可以通过移动到
    .pricing_details
    行并在vimrc中点击
    Vjj来完成:

    " pressing F5 adds two spaces at beginning of line and goes to next line
    inoremap <F5> <ESC>:s/\(.*\)/  \1/e<CR>:set nohlsearch<CR>ji
    " also works when not in edit mode
    map <F5> i<F5><ESC>
    
    " F6 removes two spaces from the end of whitespace at the beginning of line
    inoremap <F6> <ESC>:s/\(^\s*\)/\1/e<CR>:set nohlsearch<CR>ji
    map <F6> i<F6><ESC>
    
    “按F5键在行首添加两个空格,然后转到下一行
    inoremap:s/\(.*\)/\1/e:set nohlsearchji
    “不在编辑模式下也可以工作
    地图一
    “F6从行首空白的末尾删除两个空格
    inoremap:s/\(^\s*\)/\1/e:set nohlsearchji
    地图一
    
    要从段落的每一行开始处删除2个空格,只需按F5键穿过所有行即可

    这是根据我的注释和取消注释C代码的键绑定建模的(当然区别在于正则表达式)


    唯一的缺点是它需要禁用搜索突出显示,因为正则表达式始终与整个文档匹配。

    这在某些情况下有效,但并不相同,多次这样做会导致第一行保持不变,而其他行缩进。我宁愿插入和删除spaces@Daniel?只需选择行即可您想正确地移动!@Daniel:使用“是”可以,但如果我重复多次该命令,它会缩进内行,而不总是删除顶部的缩进lines@daniel只需使用
    Shift
    +
    V
    即可进入选择模式。@daniel在上一个示例中移动到
    。定价\u详细信息
    行,然后按
    Vjj这最后一个Vjj<正是我想要的,谢谢:),你能编辑你的答案并添加这个吗。
    
    " pressing F5 adds two spaces at beginning of line and goes to next line
    inoremap <F5> <ESC>:s/\(.*\)/  \1/e<CR>:set nohlsearch<CR>ji
    " also works when not in edit mode
    map <F5> i<F5><ESC>
    
    " F6 removes two spaces from the end of whitespace at the beginning of line
    inoremap <F6> <ESC>:s/\(^\s*\)/\1/e<CR>:set nohlsearch<CR>ji
    map <F6> i<F6><ESC>