在VIM中标记视觉选择

时间:2009-01-14 08:40:34

标签: vim

在许多GUI中,当我选择一段文字然后点击 Tab Shift + Tab 按钮时,所选部分将缩进或者出去。

在VIM中,我可以选择一个可视部分,然后点击&lt; &gt; 键来更改缩进,但是一旦我点击&lt; < / kbd> key我的选择被清除,所以我再次选择该部分并再次点击&lt; 。当我试图缩进一些东西并想要视觉反馈时,这真的很烦人。

在保持选择当前所选文本的同时,是否还要在vim中缩进内容?

是否有重新映射 Tab Shift + Tab 的技巧,以便它们在可视模式下以这种方式运行?

9 个答案:

答案 0 :(得分:41)

您可以为数字添加前缀,即。 “2&gt;” 中缩进两个制表位。或者,您可以使用“&gt;”缩进一次,然后“。”再次缩进(即使块不再突出显示,这也有效)。如果你走得太远,“你”会一次撤消一步。

如果你需要应用不同的命令,另一个有用的命令是“gv”来恢复最后一个视觉块。

答案 1 :(得分:33)

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

答案 2 :(得分:5)

另一种方法是选择一个块并使用以下序列在行的开头插入缩进:

  1. ctrl+V +箭头键选择块。
  2. I切换到插入模式,以便在所选块的每个行的选择开头插入插入的文本。
  3. ctrl+T增加缩进或ctrl+D减少缩进。您可以添加任意数量的缩进。 注意:缩进只能看到块的第一行,但是当退出插入模式时,缩进将复制到块中的所有行上。

答案 3 :(得分:4)

尝试使用“。”重复命令。它会记住范围,如果你走得太远,你可以用“u”来撤消一个级别。无需配置。

答案 4 :(得分:3)

或者,你可以去最近的支撑并在正常模式下输入=% - 它会缩进括号所覆盖的块及其匹配的块。但我不确定这在Python等语言中有用。

答案 5 :(得分:3)

以下关键地图的工作方式与Brian的解决方案类似, 但也要保持光标位置与单词相关。

" tap indent movement (use mark `m' for cursor position)
vmap <S-Tab>  mm<`m:<C-U>exec "normal ".&shiftwidth."h"<CR>mmgv`m
vmap <Tab>    mm>`m:<C-U>exec "normal ".&shiftwidth."l"<CR>mmgv`m

答案 6 :(得分:2)

使用视觉块选择

步骤:
选择块( Ctrl + v
输入 c (更改)
输入所需空间
输入 esc

enter image description here

答案 7 :(得分:1)

尝试&gt;} 以获取“缩进下一段第一级”。

答案 8 :(得分:0)

由于我已经放弃vi到vim,我从未使用过&gt;也不是再次。我利用vim自动缩进,可以用=

显式触发

它非常适合像= a {这甚至比=%

更有效的运动

否则,如果一个&gt;是不够的,只需重做它,或用你撤消变化。