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