Вообще-то тема окон в vim не является чем-то очень новым или сложным — основную инфу можно легко нагуглить или получить, набрав в vim'е
:help window
— но я всё же решил написать эту заметку: и себе на память, и потому, что idler с welinux'а напомнил :)Прежде чем начать, замечу, что я использую исключительно консольную версию vim'а. Как нижеприведённые команды поведут себя в gVim, я не знаю. Не думаю, что вы что-то сломаете, но все равно — я предупредил :) И да, скриншоты я делал на своём десктопе, так что они будут 4:3.
Итак, окна в vim ничем не отличаются от оконо в вашем любимом DE или WM — это просто участки экрана, содержащие какую-то информацию. В случае с вимом в роли информации чаще всего выступают файлы, хотя в окне может быть и плагин (например, NERD_TREE). vim с несколькими открытыми окнами выглядит так:
Слева NERD_TREE, справа — сорцы любимого ядрышка
Заставить vim открыть несколько файлов в разных окнах, расположив их горизонтально, можно такой командой:
vim -o attr.c open.c sync.c
Окно NERD_TREE добавляется выполнением команды
:NERDTree
Разбивка по вертикали задаётся опцией -O
:vim -O attr.c open.c sync.c
vim -O attr.c open.c sync.c
Если vim уже открыт, новое окно можно создать несколькими путями:
- пустое окно —
ctrl+w n
- горизонтально разбить текущее окно на два —
ctrl+w s
- вертикально разбить текущее окно на два —
ctrl+w v
ctrl+w c
Впрочем, для закрытия окна может использоваться и традиционное :q
(вместе с модификациями вроде :q!
и :wq
). Чтобы закрыть все окна и покинуть vim, наберите :qall
Теперь перейдём к самой частой операции — перемещению между окнами. Собственно говоря, здесь всё просто: жмём
ctrl+w
и указываем направление: h
, j
, k
или l
(не пугайтесь — стрелочки тоже работают :). Если кто забыл раскладку, напоминаю: k
h j l
Не забывайте про то, что вы в vim'е, т.е. очень продуманной и мощной среде — не стесняйтесь делать h j l
ctrl+w 3l
и т.п. :)Для переключения на предыдущее и следующее окна есть команды попроще —
ctrl+w p
и ctrl+w w
соответственно.Более редкими операциями является передвижение и ресайз окон. Тут нет ничего сложного — двигать окна почти так же просто, как и переключаться между ними: нажимаем
ctr+w
и говорим, куда двигать — H
, J
, K
или L
(обратите внимание на регистр). Увеличение и уменьшение окон также не представляют собой ничего сложного — сделать окно шире или у́же можно с помощью клавиш >
(шире) и <
(у́же), выше или ниже — с помощью +
и -
. Все эти команды меняют размер на единицу, но можно указывать и число — т.е. ctrl+w 5+
является абсолютно валидной командой.Напоследок хотелось бы привести некоторые команды, имеющие отношение к вимовским окнам. По большей части они будут полезны программистам:
vim -d файл1 файл2
позволяет сравнивать файлыvim -d pk.new pk.old
ctrl-w ]
делит текущее окно, во второй половине открывает определение того, что под курсоромctrl+w [idf]
разделяет окно и во второй половине открывает:i
— определение переменнойd
— определение (функции или чего там под курсором)f
— файл, путь к которому находится под курсором
ctrl+w o
закрывает все окна, кроме текущегоПожалуй, всё. Напомню, что более подробно об окнах вы можете почитать в самом виме, набрав
:help window
Happy vimming!
Копируете статью — поставьте ссылку!
4 комментария:
^W+_ - раскрыть текущее окно на весь экран, оставив от остальных по одной строке
Автор спасибо!
Очень интересно и познавательно, пиши еще!
idler перечитал статью и шлет благодарность :)
:-)))!!! Начал пробовать все предложенные комбинации клавиш, промахнулся, даже не понял что нажал (что-то левой рукой после ctrl+w и кажется с shift_ом) vim свернулся вверх в желтую полоску, при этом открыл окно терминала. Минут пять клацал по клавиатуре пока не вернул свой файл... кажется это была комбинация ctrl+q...
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.