Я пытаюсь написать команду, которая закроет окно браузера дерева (vim-дерево) и изменит размеры других окон.

,to открыть окно и настроить размер окна таким образом, чтобы все открытые окна сохраняли нормальный размер (используя :set columns+=30 CTRL-W =).

,tc должен закрыть окно дерева (полная длина, крайний левый) и изменить размер главного окна (:set columns-=30).

Как я могу написать команду, которая закрывает крайнее левое окно, чтобы я мог набрать ,tc чтобы закрыть окно и изменить размер за один раз?

  • Я могу перейти к нему с помощью CTRL-W h , но это не элегантно и потенциально раздражает (слышимый звонок!) использовать 10CTRL-W h в команде.
  • :topleft c к сожалению не работает.

Можете ли вы придумать элегантный способ сделать это?

1 ответ1

1

Если окно действительно имеет полную длину в крайнем левом углу, оно будет иметь окно с номером 1, поэтому должно работать следующее отображение:

:nmap ,tc :exe '1wincmd w' | close<CR>

Это переходит к первому окну, а затем закрывает его. Недостатком является то, что активное окно станет тем, чем было окно № 2 (которое становится окном № 1, когда первоначальное окно № 1 закрыто), а не последним окном, в котором вы были.

К сожалению :1wincmd c не закрывает первое окно, поскольку ctrl - w c не принимает счетчик, поэтому я не могу найти способ избежать первого перехода к окну, которое вы хотите закрыть.

Редактирование 2017 года: так как я написал этот ответ, ctrl - w c принимает число в более новых версиях Vim, поэтому ответом будет просто использовать :1wincmd c и он не будет отвлекать курсор от вашего активного окна:

:nmap ,tc :1wincmd c<CR>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .