2013-10-16 158 views
1

我发现此代码的论坛,使我的生活更容易切换标签之间,我把它放在我的〜/ .vimrc。令人高兴的是,它运作良好。不幸的是,每当我按Ctrl + Tab来改变标签,光标就会移回一个字符。任何人都可以帮我把光标放在一个地方吗?VIM ctrl +选项卡更改选项卡向后移动光标

set showtabline=2 
:nmap <C-S-tab> :tabprevious<cr> 
:nmap <C-tab> :tabnext<cr> 
:nmap <C-t> :tabnew<cr> 
:map <C-t> :tabnew<cr> 
:map <C-S-tab> :tabprevious<cr> 
:map <C-tab> :tabnext<cr> 
:map <C-w> :tabclose<cr> 
:imap <C-S-tab> <ESC>:tabprevious<cr>i 
:imap <C-tab> <ESC>:tabnext<cr>i 
:imap <C-t> <ESC>:tabnew<cr> 

回答

0

romainl说的一切都是很好的建议,尤其是标签不应该像其他编辑器一样用作文件的一对一代理。学习使用缓冲区,你的生活会变得更容易。他们真的很简单:你真正需要的只是:set hidden,:ls,:bn, :bp,也许有些映射类似于你为标签设置的映射,还有一些Vim的帮助。

也就是说,romainl的映射将在一行的末尾失败。一个更好的解决方案使用<C-o>,它可以暂时取消一个命令的插入模式,并考虑到行结束行为等问题。您可以使用:

:imap <C-tab> <C-o>:tabnext<cr>

+0

什么是选项卡,然后? :)我一直使用vim多年,总是发现缓冲区繁琐,但在其中有几个分裂的标签运作良好 – Eevee

2

光标向后移动一个字符,因为这是i的工作原理。从技术上讲,你可以改变

:imap <C-tab> <ESC>:tabnext<cr>i 

:imap <C-tab> <ESC>:tabnext<cr>li 

停留在插入模式是不是一个很好的主意。如果您无法提供帮助,我建议您从~/.vimrc中删除三个imap,以强制您正确使用Vim。

顺便说一句...

  • 你不需要在你的领导~/.vimrc:

    map <C-t> :tabnew<cr> 
    
  • 你并不真的需要那些:map,因为你已经有了nmap(和imap,但它应该去)。

  • <C-t>是非常有用的,无论是在插入模式(缩进当前行)和正常模式下(在tagstack回去)。你不应该像这样重写它。

  • <C-S-Tab>可能不会在终端工作。

  • 选项卡并非设计为1对1代理文件,因此不应该这样使用。你应该使用缓冲区来代替。

相关问题