Як vim, як я можу швидко перемикатися між вкладками?


126

У гнома-терміналі, я можу просто натиснути Alt+ ( 1, 2, 3і т.д.) , щоб перейти до певних вкладках. Я також можу використовувати Ctrl+ ( PgUp/ PgDn) для переходу по вкладках (правда, менш зручно, але його можна переробити).

Якщо я хочу використовувати Vim вкладок замість гнома-термінал вкладок, введення :tabnі :tabpє досить громіздким. Я міг би зіставити їх на комбінації клавіш, але це все ж набагато менш зручно, ніж переходити безпосередньо до вкладки 4 з Alt+ 4.

Чи є більш швидкий спосіб перемикання між вкладками в vim?

Відповіді:


209

Наступна вкладка: gt

Попередня вкладка: gT

Нумерована вкладка: nnngt


1
Я знаю, що міг би набрати nnn g t, але хочу це зробити швидко , тобто Alt + nnnабо Ctrl + nnn. Але Alt + nце вже прийняте gnome-terminal, і прив'язка до Ctrl + nцього, здається, не має ніякого ефекту.
Метью

6
Як щодо відображення функціональних клавіш nnn g t? Наприклад, :map <F2> 2gt. Існує проблема, <F1>яку GNOME часто наносить на допомогу. Або ви могли б вибрати який - ключ ви не часто користуєтеся в звичайному режимі, скажімо , кома, і відобразити його в такий спосіб: :map , gt. Потім 1,перенесе вас до вкладки 1, 2,до вкладки 2 тощо.
garyjohn

2
Мені було дуже зручно використовувати '<' і '>'
Ігор Стоппа

Прокрутіть униз, щоб отримати кращу відповідь ..
The Vivandiere

41

Чому б не скористатись вашим лідером (мій лідер відображений Space):

" Go to tab by number
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<cr>

Ви можете скористатися налаштуваннями нижче для перемикання між поточною та останньою активною вкладкою (тут вона відображається на Ctrl+ L, тобто <c-l>):

" Go to last active tab

au TabLeave * let g:lasttab = tabpagenr()
nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>
vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>

2
Вам потрібно au TabLeave * let g:lasttab = tabpagenr()для c-lроботи: stackoverflow.com/questions/2119754 / ...
Чіро Сантіллі新疆改造中心法轮功六四事件

1
Я хотів би додати <leader>h/lдо gTіgt
Brenden

25

Це найпростіший спосіб, який я знайшов, щоб швидше та просто переходити між вкладками.
Додайте наступні рядки до свого .vimrc і насолоджуйтесь цим, більше хитрощів щодо вкладок vim тут .

nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>

Тепер ви можете використовувати Ctrl лівий і Ctrl правий.

Або просто скористайтеся:
1gtперейти до вкладки перша,
2gtперейти до другої вкладки,
3gtперейти до вкладки три тощо тощо ... тепер у вас є ідея.


Я думаю, що це найкраща відповідь тут. Дуже зручно мати. Я просто відключив ті системні клавіші в OS X, щоб зробити їх незалежними.
Лео Леопольд Герц 준영

1
Використання клавіш зі стрілками сповільнить вас. У мене їх відключено
Запитайте та дізнайтеся

Так ... Найкраща відповідь!
The Vivandiere

На жаль, "Ctrl" створив мені проблеми в vmplayer, тому я змінив клавіші "Backspace" і "Enter".
Борис Даппен

Користувачі Mac: Ви , можливо , буде потрібно відключити по замовчуванням Control Mission ярлики простору клавіатури: stackoverflow.com/questions/15719135 / ...
azatar

15

Оскільки я на Mac і не використовую MacVim (але звичайний vim в терміналі), у мене виникли певні труднощі з тим, що комбінації клавіш не надсилаються до терміналу.

Найбільш сумісний (і для мене найзручніший) спосіб швидкого переключення вкладок походить із сайту Vim Wikia .

Розмістити у своєму .vimrcфайлі:

nnoremap H gT
nnoremap L gt

Тепер Shift-h(капітал H) і Shift-l(капіталу L) перемкне вас швидко між вкладками, і слід угодою , що hі lвідповідають лівої і правої в Vim на регулярній клавіатури QWERTY.


Я люблю це рішення, інтуїтивно зрозуміле та vim. Не потрібні клавіші зі стрілками.
Іван Івкович

Я згоден. Дуже приємне рішення
j sad

це справді інтуїтивне рішення. Дякую!
LeOn - Хан Лі

2

(На жаль) vim також використовує CtrlPgDn/ PgUpдля переходу по вкладках. Вам потрібно буде використовувати mapдля складання карт tabn/ tabpдля чогось корисного.


2

Якщо ви використовуєте gvim або подібне (тобто щось поза терміналом), ви можете імітувати gnome-terminalповедінку, яку ви описуєте:

" Map alt-x keys to jump to a tab
for i in range(1, 8)
  execute "nmap \<M-" . i . "> " . i . "gt"
endfor
nmap <M-9> :tablast<CR>

Так alt-1переходить до першої вкладки тощо. Але alt-9переходить до останньої вкладки (як у Chrome).

Ви можете обернути це if has("gui_running")(хоча, здається, це не працює з Neovim) або поставити це .gvimrc.


2

Додайте їх до .vimrc, щоб увімкнути гарячі клавіші навігації на вкладках:

<ctrl-l> перемикання між двома останніми вкладками;

<ctrl-j/k> перейти на останню / наступну вкладку;

<ctrl-t> відкрити нову вкладку.

" tab navigation: Alt or Ctrl+Shift may not work in terminal: " http://vim.wikia.com/wiki/Alternative_tab_navigation " Tab navigation like Firefox: only 'open new tab' works in terminal nnoremap <C-t> :tabnew<CR> inoremap <C-t> <Esc>:tabnew<CR> " move to the previous/next tabpage. nnoremap <C-j> gT nnoremap <C-k> gt " Go to last active tab au TabLeave * let g:lasttab = tabpagenr() nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr> vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>


Чи можливо відобразити <Ctrl> - <Tab> до останньої функції вкладки перемикання. Я спробував nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>і vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>без везіння.
zzeroo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.