2013-10-16 202 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代理文件,因此不應該這樣使用。你應該使用緩衝區來代替。

相關問題