Как я могу увеличить разделенное окно?


110

Вызвав :helpв Vim, я получил справочную страницу с разделенным окном. Я хочу развернуть окно справки и закрыть другое окно.

Как я могу это сделать? Какая команда Vim делает это?

Ответы:


88

С помощью: help [topic] вы открываете интересующую вас тему.
Ctrl-Wo сворачивает другие окна (оставляя открытым / максимальным только окно справки).
(Ctrl-Wo означает, что удерживая Ctrl, нажмите W, а затем o)


39
или,: only будет работать.
shible

14
Из файла редактирования, как я могу вернуться к справочному руководству после нажатия CTRL + W o?
shible

3
@guru: C-w, ^, :buf OtherFile.txt, и :sbuf Otherfile.txtт.д. (см справку wincmd, switchbufдля более подробной информации). Забавно то, что мой (ИМХО) правильный ответ еще не был дан ...
sehe

2
@ldigas: это (удивительное) мнение. Если вы не процитируете авторитетный источник, я буду считать это вашим личным предпочтением. Обычно я их не использую, но недавно обнаружил, что использую их для подобных вещей (временное максимальное увеличение бокового буфера; выполнение мощных вещей, таких как наличие нескольких непересекающихся бок о бок различий в одном сеансе vim). Вкладки - это еще и чудо удобства использования gvim --remote. Я всегда использую se guioptions=agimхотя, потому что предпочитаю консольный рендеринг вкладок.
sehe

23
это закроет другие окна, и если у вас есть одно или несколько окон, в которых вы внесли изменения, но не сохранили, тогда это не сработает - также я думаю, что вопрос заключается в максимальном увеличении окна для работы в течение короткого времени в этом состоянии, а затем позже вернуться в предыдущее состояние - закрыв все окна, вам придется использовать файл сеанса или вручную открыть все другие окна, чтобы вернуться
serup

133

Вы можете использовать Ctrl+WT( это заглавная букваT ) для перемещения любого открытого окна на отдельную вкладку.

Как упоминалось другими Ctrl+W_/ Ctrl+W|для максимизации в текущей вкладке / макете окна (при соблюдении минимальных настроек высоты / ширины для различных других окон).

( Ctrl+W=изменяет размеры всех окон до одинакового размера, соблюдая минимальные настройки высоты / ширины)

Редактировать в комментарий

  1. запустить vim (например gvim /tmp/test.cpp)
  2. вызвать справку :help various-motions- открывает разделенное окно
  3. переместить справку в отдельную вкладку развернуто: C-wT
  4. наслаждайтесь чтением прекрасного руководства :)
  5. верните справку на исходную вкладку:

    mAZZ<C-w>S`A
    
    • мА: установить глобальную метку A
    • ZZ: закрыть буфер / вкладку справки
    • C-wS: разделить исходное окно
    • `A: перейти к сохраненной отметке A

Вы можете избежать использования метки для обычных (не вспомогательных) буферов. Дайте мне знать, если вам интересно.


4
После перехода на вкладку с помощью CTRL + WT, как я могу вернуться к исходным разделенным окнам?
shible

2
@guru: просто переключайте вкладки как всегда (используйте Ctrl-PgUp, Ctrl-PgDownили :tabnext, :tabprev). Для того, чтобы закрыть новое (например , справку) вкладки, использование ZZ, Ctrl-W, C, :q, :clo, :tabcloseили любой другой способ , которым Вы обычно закрываются окна / вкладки
sehe

1
Нет, вопрос был не в этом. Предположим, у вас есть две вкладки, теперь вы не хотите вкладок, вы хотите, чтобы два буфера были разделены окнами. Есть ли какая-нибудь одна команда для этого?
shible

Вопрос редактирования с общей процедурой. ( Я хочу добавить, что тон ваших комментариев может "No, that was not the question"показаться довольно недружелюбным. В письменной речи это может звучать как выговор. Я уверен, что вы не имеете в виду это плохо )
sehe

@guru: ответ обновлен. Это было немного сложнее, чем ожидалось, поскольку буферы справки особенные (и вы не можете использовать их так, :sbufкак я обычно предпочитаю). Надеюсь, это поможет
см.

53

Вы можете расширить окно до максимального размера, используя Ctrl+W_(подчеркивание). Окончательный размер расширенного окна будет ограничен значением winminheightпараметра. Когда вы закроете окно справки, ваши предыдущие окна будут восстановлены до своих прежних размеров.


19
Ctrl+W o закрывает другие окна, поэтому их больше нет. Вот почему я использую Ctrl+W _.
Грег Хьюгилл,

2
Как я могу вернуть исходные два разделенных окна с помощью файла редактирования и справочного руководства?
shible

3
Команда Ctrl+W =изменяет размер окон, чтобы они были примерно одинакового размера.
Грег Хьюгилл,

14
Для вертикального разделения вы захотите использовать Ctrl+W |.
Ахал Дэйв

2
всем потерянным душам, которые случаются в этой ветке ... чтобы вернуться к разделению просмотров, используйте ctrl+w = // это делает все окна одинакового размера
duggi

19

Я предпочитаю использовать для этого вкладки. Использовать

:tabedit %

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

:tabclose

Я считаю это идеальным решением, так как оно работает вместе с :cw плагином Tagbar. Взято с: vim.wikia


13

Мне нравится использовать букву «M» для максимизации и «m» для минимизации.

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

nnoremap <C-W>M <C-W>\| <C-W>_
nnoremap <C-W>m <C-W>=

Причина использования nnoremap в том, что меня не волнует рекурсивное сопоставление, но просто map также должна работать.


1
Если вы используете nnoremap <C-W>M <C-W>\|<C-W>_(без пробела после |), то курсор не будет перемещаться на 1 при каждом максимальном увеличении.
rsanden

1
Мне нравится использовать обратную косую черту ( nnoremap <C-W>\ <C-W>\|<C-W>_). Он чувствует себя естественно с привязками по умолчанию |, _и =.
rsanden

6

Вы можете получить окно справки в полном размере, не закрывая / не изменяя размер других окон, используя

tab help {topic}

Это откроет окно справки на новой вкладке, другие окна останутся без изменений (размер действительно изменен, чтобы можно было отображать табулатуру, но это только одна дополнительная строка выше). Вы можете закрыть справку как обычно: по крайней мере, :bw<CR>и <C-w>cработать для меня, закрывая новую вкладку.


5

Установите плагин vim-maximizer , затем вы можете развернуть текущее окно и восстановить его с помощьюF3



2

Для того, чтобы получить только помощь вверх, затем закройте другое окно, сделайте следующее: :helpCTRL-WCTRL-W:close. Тогда вам будет только помощь.


1

в вашем .vimrc, просто поместите

nmap - :res<CR>:vertical res<CR>$

Если вы хотите развернуть текущее окно во весь экран, просто нажмите - в командном режиме. Нажмите =, если вы хотите восстановить последний статус нескольких окон.


2
Красиво, но = не восстанавливает «последний статус».
majkinetor

1

Каким-то образом плагин ZoomWin у меня вообще не работал, теперь я вижу, что есть другие плагины, но я уже написал это и дает мне точный эффект, который я хотел (с небольшой причудой, подробно описанной ниже) :

function! ToggleZoom(zoom)
  if exists("t:restore_zoom") && (a:zoom == v:true || t:restore_zoom.win != winnr())
      exec t:restore_zoom.cmd
      unlet t:restore_zoom
  elseif a:zoom
      let t:restore_zoom = { 'win': winnr(), 'cmd': winrestcmd() }
      exec "normal \<C-W>\|\<C-W>_"
  endif
endfunction

augroup restorezoom
    au WinEnter * silent! :call ToggleZoom(v:false)
augroup END
nnoremap <silent> <Leader>+ :call ToggleZoom(v:true)<CR>

Используйте назначенную клавишу (Лидер и + в моем случае) для переключения между развернутым / предыдущим макетом. Если вы переключитесь на другое разделение на той же вкладке, максимизация отключится.

Если вы измените вкладки, разделение останется максимальным, хотя каким-то образом оно больше не будет покрывать всю ширину, а окна с минимизированной шириной вернутся примерно на 4 столбца или что-то в этом роде. В любом случае, это работает для меня приемлемо, даже с этой незначительной причудой.

edit: как-то теперь он работает нормально, должно быть, раньше что-то напутало.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.