Можно ли открыть новую вкладку слева от текущей вкладки?

Выдача :tabnew somefile откроет somefile на новой вкладке справа от текущей вкладки. Могу ли я каким-то образом заставить Vim открыть вкладку слева от текущей вкладки?

Обновить. Рекомендуемые ответы позволяют мне открыть новую вкладку слева, но они автоматически завершают автозавершение имени файла, что не работает.

Ответ 1

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

command -nargs=* -bar Tabnew :execute (tabpagenr()-1).'tabnew '.<q-args>

. Примечание: для использования 0tabnew отлично сохранить: это делает то, что предназначено, и делает новую вкладку первой, даже если нет закладки, которая имеет номер ниже 1.

Если вы уверены, что никогда не используете эту команду с помощью ++opt или +cmd, вы можете использовать -complete=file сразу после -bar. Примечание: помимо его имени это не вариант завершения, так как он также расширяет имя файла (и показывает ошибки в случае -nargs=1, а globs - слишком много имен файлов). К сожалению, это поведение даже не упоминается в документации.

Ответ 2

Так как Vim 7.4.530 (2014), вы можете использовать отрицательные значения для [count] в :[count]tabnew для открытия вкладок. Чтобы открыть вкладку непосредственно слева от текущей вкладки, используйте:

:-1tabnew

Документация: https://vimhelp.appspot.com/tabpage.txt.html#:tabnew

:[count]tabe[dit]                               :tabe :tabedit :tabnew
:[count]tabnew
                Open a new tab page with an empty window, after the current
                tab page.  If [count] is given the new tab page appears after
                the tab page [count] otherwise the new tab page will appear
                after the current one. 
                    :tabnew     " opens tabpage after the current one
                    :.tabnew    " as above
                    :+tabnew    " opens tabpage after the next tab page
                                " note: it is one further than :tabnew
                    :-tabnew    " opens tabpage before the current one
                    :0tabnew    " opens tabpage before the first one
                    :$tabnew    " opens tabpage after the last one

Аналогичная функциональность также доступна для :tabclose, :tabonly, :tabmove, см. ссылку, связанную выше. Если это не сработает, используйте :version, чтобы проверить, обновлен ли ваш Vim и/или использовать :help tabnew, чтобы проверить, похожа ли документация на приведенную здесь.

Ответ 3

Вы можете использовать [count]. Предположим, что вы на вкладке №4, :3tabnew создает новую вкладку слева от текущей вкладки.

Имейте в виду, что эти вкладки всегда создаются справа от текущей вкладки или вкладки # [count]. :3tabnew эффективно означает "создать новую вкладку после вкладки № 3".

Ответ 4

Вы можете написать свою собственную команду, чтобы сделать это

:command -nargs=1 TabnewBefore exec "tabnew <args>" | exec "tabmove -1"

Затем, чтобы использовать его

:TabnewBefore somefile

Если вы хотите, чтобы это было банавром "tabnew" по умолчанию, вы можете сделать

:ca tabne TabnewBefore

Теперь, если вы наберете tabne и нажмите пробел в командной строке, он сделает то, что вы хотите, если вы хотите, чтобы исходный тип поведения выполнял полную команду tabnew

Вы можете поместить эти определения в свой .vimrc файл для дальнейшего использования