新手问题 请教一个关于 vim 的技巧

QueXuQ · 2012年11月15日 · 最后由 HungYuHei 回复于 2012年11月15日 · 2902 次阅读

我经常在使用 slim 或者 haml 的时候会遇到这样的问题,例如删除了某个 DIV。如下

.row
  .search
    .span12
    .span12
    .span12
    .span12

我现在要把.search 删掉,然后我希望一个功能是:所有的.span12,可以让我选中后,同时往前缩 2 个空格,其实也就是同时删除前面 2 个空格。 请问这是怎么实现的?至今我仍然一个个的删除,今天好多要删发现好麻烦,但是找不到怎么使用同时删除的方法?

还有就是如果加了一个 DIV,然后同时加 2 个空格的方法? 请问有谁知道在 vim 下怎么操作呢?

ctrl+v 后就会进入列编辑模式,就可以竖着编辑了,比如你要删除两列空格,就把光标移到第一行要删除的第一个空格上,按ctrl+v然后往后移一格,再往下选到你要删的最后一行,按x就可以了。具体可以看:help visual-block。 不过这样的排缩进大都可以用=号解决。

#1 楼 @yesmeck 我这ctrl+v后是黏贴复制了的东西呢。请问是为什么呢? =号在 erb 上好用,可是 slim 上不太灵。

减少缩进 4 行

4<<

增加缩进 4 行

4>>

按 tab/shift-tab 修改选区缩进:

vmap <Tab> >gv
vmap <S-Tab> <gv

#3 楼 @luikore 谢谢,就是这样子的。

推荐楼主一本书 上面的例子都是楼主这种类型的

#2 楼 @QueXuQ 你是 windows? 还是自己设的快捷键把ctrl+v设成粘帖了。。

#3 楼 @luikore 👍

gvim 或者是 mavvim 的快捷键是 ctrl+q

#6 楼 @blacktulip 晕了?怎么没显示出来啊

practical vim

#8 楼 @ywjno 原来如此,一直苦恼没有列编辑模式。

@QueXuQ

大写的为:Shift + g

Esc 2 G " 跳转到第二行
dd "删除第二行, 
Shift + V " 进入行选择模式
5G "从当前行选择到第5行, 也就是所有 .span
< " 选择模式下的缩进

如果要索引两个空格, .vimrc 中修改 tab 设置

set tabstop=2 "tab 后, 光标停在2个空格后
set shiftwidth=2 " 一个tab 等于2个空格
set noexpandtab " 将tab转换成空格

列模式选中想移动的行,command + [

#1 楼 @yesmeck 这个靠谱,我平时都这么处理的。

#7 楼 @yesmeck ubuntu.可能是插件的问题。默认设置了。我用 @huacnlee 以前发过的一个插件https://github.com/huacnlee/vimmate #8 楼 @ywjno 这个很好。非常好用。 #9 楼 @Teddy 这本好新的书哦,还没有看过。

#13 楼 @QueXuQ 我看了一下,他将ctrl-c/ctrl-v 映射为 复制/粘贴https://github.com/huacnlee/vimmate/blob/master/.gvimrc#L133-138

需要 登录 后方可回复, 如果你还没有账号请 注册新账号