Можно ли открыть новую вкладку слева от текущей вкладки?
Выдача :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 файл для дальнейшего использования