Vim - 使用制表符缩进多行

时间:2011-09-17 03:45:02

标签: vim tabs mapping indentation

我希望能够分别用tab和shift-tab突出显示我想要缩进/反向缩进和缩进的行。

" for command mode reverse tab
nmap <S-Tab> <<
" for insert mode reverse tab
imap <S-Tab> <Esc><<i
" for command mode multiple line reverse tab(doesn't work)
nmap <Tab> i<
" for insert mode multiple line reverse tab(doesn't work)
imap <Tab> <

" for command mode tab
nmap <Tab> >>
" for command mode multiple line tab(doesn't work)
nmap <Tab> i>
" for insert mode multiple line tab(doesn't work)
imap <Tab> >

在我愿意使用vim作为我的主编辑之前,这是我需要的最后一件事。

3 个答案:

答案 0 :(得分:23)

要选择并突出显示您的文字,您需要start using visual mode,(我通常通过点击 v 来执行此操作)并使用标准motions选择您的文字(例如 h j k l )。

要创建在visual mode中使用的映射,您需要:vmap ...

:vmap <Tab> >
:vmap <S-Tab> <

但为什么你需要为此创建一个映射?

visual mode中,<会向左移动选定的行并向右移动>

有时最好只学习Vim(甚至是Vi)键,然后你可以使用任何安装,而不仅仅是.vimrc的安装。

例如,你已经把:

imap <Tab> <

这个坏主意。这将使您更难在文本中插入制表符(即使 ctrl + i 也不会像我期望的那样工作),每次你键入标签,您将插入<

快乐编辑!

答案 1 :(得分:5)

在插入模式下,您可以使用 control - d control - t 删除/添加缩进(分别)。

所以,替换

imap <Tab> <

imap <Tab> <c-d>

imap <Tab> >

imap <Tab> <c-t>

在视觉模式中,您可以突出显示一个块,然后点击&lt; &gt; ,但如果您希望它是 tab shift - 标签,你可以像vmap一样设置它,就像你为其他人做的那样。

答案 2 :(得分:1)

把它放在.vimrc中就是你想要的

:map <Tab> >
:imap <Tab> <Esc> >
:vmap <Tab> >gv
:map <S-Tab> <
:imap <S-Tab> <Esc> <
:vmap <S-Tab> <gv

vmaps之后的gv将保留您的亮点。地图和imaps将允许您插入其他模式。它不像textmate,但它已经到了那里:)