Vim – несогласованность между: tabnext N и: tabprev N

Из :help tabs Vim's :help tabs :

 :tabp[revious] {count} :tabN[ext] {count} {count}<C-PageUp> {count}gT Go {count} tab pages back. Wraps around from the first one to the last one. 

В то время как

 :tabn[ext] {count} {count}<C-PageDown> {count}gt Go to tab page {count}. The first tab page has number one. 

Наконец, без параметров :tabn ведет себя в соответствии с :tabp и :tabp 1 .

Почему ? Это только для того, чтобы 3gt перейти на вкладку 3 вместо 3 вкладок вперед? Ничто не мешает vim иметь :tabn 3 и :tabjump 3 и привязать Ngt к использованию :tabjump а не :tabn . Честно говоря, для меня это выглядит как ошибка дизайна.

Можем ли мы :tabp N forward эквивалент, используя только встроенные команды? Я заметил, что нельзя использовать :tabprev -2 , например. Если нет встроенного экземпляра :tabp N , то почему у вас есть :tabp N вообще?

Да, это непоследовательно, но я также нахожу доступные варианты удобными. Он позволяет одновременно перебирать назад / вперед по одному, а также абсолютную адресацию.

Почему так? Вы могли искать в архивах списков рассылки vim_dev для сообщений, когда эта функция была предложена / отправлен патч, или попросите, если кто-нибудь помнит фон. (Обратите внимание, что есть много других функций с менее оптимальными интерфейсами, это проект добровольца с одним узким местом BDFL наверху, и, что хуже, лучше менталитет, безусловно, применим здесь.)

Чтобы выполнить относительную навигацию по вкладкам в прямом направлении, вы можете использовать:

 :execute 'tabnext' tabpagenr() + N 

Вы можете легко определить пользовательскую команду или сопоставление, если найдете это полезным.