Отображение навигации по вкладкам не работает

ПРИМЕЧАНИЕ. Я использую Terminator вместо терминала. Но поскольку все остальные сопоставления работают нормально, почему они не работают.

Я попытался использовать эти сопоставления в своем файле vimrc, чтобы иметь возможность использовать навигацию по вкладкам. Но он вообще не работает.

nnoremap <C-S-tab> :tabprevious<CR>
"nnoremap <C-tab>   :tabnext<CR>
nnoremap <C-tab> :tabn<CR>     "I also tried this
nnoremap <C-t>     :tabnew<CR>
inoremap <C-S-tab> <Esc>:tabprevious<CR>i
inoremap <C-tab>   <Esc>:tabnext<CR>i
inoremap <C-t>     <Esc>:tabnew<CR>
inoremap <C-S-w>   <Esc>:tabclose<CR>

"Также для перехода на n-ю вкладку используйте <A-Fn>

nnoremap <A-F1> 1gt
nnoremap <A-F2> 2gt
nnoremap <A-F3> 3gt
nnoremap <A-F4> 4gt
nnoremap <A-F5> 5gt
nnoremap <A-F6> 6gt
nnoremap <A-F7> 7gt
nnoremap <A-F8> 8gt
nnoremap <A-F9> 9gt
nnoremap <A-F10> 10gt 

ПРИМЕЧАНИЕ. У меня установлены ctags и cscope. Поэтому я думаю, что может быть некоторый конфликт, поскольку ctrl-t должен отскочить от определенного тега. И только это сопоставление работает для новой вкладки.

Также я проверил, что ctrl-PageDown работает нормально для той же цели.

2-й вопрос:

Как эта ключевая нотация работает в vimrc. Это что-то вроде этого:

  1. Все клавиши-модификаторы должны использоваться в прописных буквах, например

    • C for Ctrl.
    • А для альт.
    • S для сдвига.
  2. И другие ключи все в маленьком.

Но как насчет таких ключей, как:

  • Дома
  • Конец
  • Backspace
  • Побег
  • PageUp
  • Листать вниз
  • Вкладка
  • Функциональные клавиши и т. д.

Как их использовать?

Здесь я читал, что их следует использовать в сопоставлении, но даже они использовал вкладку вместо вкладки в сопоставлениях.


person Prabhat Kumar Singh    schedule 27.10.2014    source источник
comment
Прочитайте :h key-notation для вашего второго вопроса.   -  person FDinoff    schedule 27.10.2014


Ответы (2)


Приготовьтесь к разочарованию.

Коды клавиш терминала

Vim принимает коды клавиш терминала, поэтому возможны не все комбинации клавиш. Лучший способ выяснить, какие клавиши распознаются, — открыть режим вставки и нажать ctrl+v, а затем ввести комбинацию клавиш. Это покажет вам необработанные коды. Сделайте это для другой комбинации клавиш. Если необработанные коды одинаковы, Vim не может их различить. например ctrl+v ctrl+shift+вкладка.

Ваши сопоставления

Вероятно, вам следует избегать сопоставления режимов вставки для переключения вкладок. Это просто не Vim Way, так как режим вставки следует использовать только короткими очередями.

Ваши сопоставления :tabprev и :tabnext можно упростить до сопоставлений gT и gt. Лично я не возражаю против сопоставлений по умолчанию gt или gT.

<key> обозначение

Насколько я знаю, дело не в этом. Все мои сопоставления в нижнем регистре. Список обозначений <> см. в разделе :h key-notation.

Вы правы в <c-..> для контроля, <a-...> для alt и <s-...> для Shift. Примером комбинации будет <c-s-space>. Примечание: большинство сопоставлений <c-s-...> обречены на неудачу.

Использование вкладок

Вкладки Vim не похожи на вкладки большинства текстовых редакторов. Они больше похожи на видовые экраны в группу окон/разделений. Кроме того, Vim ориентирован на буфер, а не на вкладки, как большинство редакторов. Например, использование таких функций, как список быстрых исправлений Vim, часто проще без вкладок (см. :h 'switchbuf, если вам необходимо использовать вкладки). Вкладки Vim часто мешают использовать разбиения, поскольку доступны лучшие команды навигации по окнам и буферам. Лично я открываю много файлов (иногда более 100) без вкладок и использую в среднем 1-2 разделения без каких-либо проблем.

Итог: научитесь эффективно использовать буферы.

Заключение

Я бы посоветовал вам быстро сломать этот рабочий процесс с вкладками и научиться любить буферы. Вам не понадобятся ваши сопоставления, и вы не будете работать против природы Vim.

person Peter Rincker    schedule 27.10.2014
comment
ну, как я уже сказал, я использую Terminator вместо приложения терминала по умолчанию, я обнаружил, что нет необходимости добавлять дополнительные сопоставления в vimrc для навигации по вкладкам. Поскольку это можно сделать, просто щелкнув правой кнопкой мыши пустое место в терминаторе, затем выберите предпочтение, во всплывающем окне выберите вкладку «Привязка клавиш» и вуаля, теперь вы можете указать любую комбинацию клавиш, которую вы хотите, ранее по умолчанию они отключены. - person Prabhat Kumar Singh; 25.11.2014

Прочтите :help key-notation для объяснения… ключевых обозначений Vim.


Как правило, лучше перестраховаться, поэтому я рекомендую следовать этим соглашениям при составлении комбинаций:

  • всегда используйте заглавную букву для клавиши модификатора, C для Control, S для Shift, A для Alt, D для Command (только MacVim GUI), M для Meta,

  • всегда используйте строчные буквы для алфавитных клавиш, abc…xyz,

  • всегда делайте заглавной первую букву «специальных» ключей, Tab, Space, Up и т. д.

Примеры:

<S-Up>
<C-r>
<A-LeftMouse>

Однако следующая запись работает так же хорошо, поэтому... какую бы запись вы ни выбрали, старайтесь быть последовательным:

<s-UP>

Использование нескольких модификаторов в одном сопоставлении работает ненадежно, поэтому в долгосрочной перспективе будет лучше, если вы полностью их избежите.

nnoremap <C-S-j> :echo "csj"<CR>
nnoremap <C-j>   :echo "cj"<CR>

теперь нажмите <C-j> и <C-S-j> в обычном режиме.


<C-S-w> неотличим от <C-w>.


:verbose map <C-t>

показывает, что сопоставлено с <C-t> и где произошло сопоставление. Вы можете использовать его для отладки ваших отображений.


И я согласен с Питером, вы неправильно используете вкладки и режим вставки.

person romainl    schedule 27.10.2014