Pull to refresh

Comments 40

Описание ZZZ нигде не нашел. У меня в Vim не работает. Опишите пожалуйста.
А у ZZ поведение такое же как и у :wq.
Если не секрет, то как вы форматировали текст и каким спеллчекером пользовались? У меня так даже специально не получится :(
Нет. :xa — закрывает буферы, сохраняет изменения и закрывает Vim. Мое же решение касается закрытия файлов в открытом Vim. По сути это «умная» замена для :bw, :BW и :q, по крайней мере я теперь закрываю файлы и окна намного быстрее.
Понятно, я просто неверно истолковал предложение в начале статьи «но чего он не умеет так это закрывать все одной командой».
Вы так и не прояснили, почему команда :q не подходит
Для навигации по файлам я использую плагин MiniBufExplorer. На основе списка открытых буферов он создает подобие табов, таким образом если я хочу закрыть файл и не видеть его в MiniBufExplorer, мне необходимо не просто скрыть буфер или закрыть окно с буфером, а удалить буфер полностью(что и делают команды :bw, :bd и тд.).
:q делает текущий буфер невидимым и если есть не сохраненные буферы — покажет в окне следующий из них. Если открыто несколько окон :q — просто закроет текущее окно, буфер останется нетронутым, а если окно одно и все буферы сохранены — закроет Vim
Я совсем не понял в чем Ваша проблема. Я закрываю окна — :q, буферы — :bd и горя не знаю.
Это и не проблема вовсе, просто «свистелки, перделки» которые облегчают мне жизнь.
Честно говоря, я затрудняюсь ответить лучше чем я это сделал в статье, если Вам не сложно вы могли бы попробовать мой вариант и посмотреть в чем разница. Благо засунуть функцию в vimrc и сделать на нее меппинг не сложно. Буду рад узнать ваше мнение.
вы могли бы попробовать мой вариант и посмотреть в чем разница

Разница между чем? Я не понимаю, какую задачу Вы решаете. Перечитывал несколько раз — ясности не прибавилось. Описали бы пример: у меня открыто 3 файла, один не сохранен, на экране 2 сплита — хочу закрыть все и сохранить одним махом. Как-то так.

Мне кажется, Вы что-то усложняете. Я более года (или более 2х лет, не помню) использую vim и никогда не использовал команды :bw, :bun, :close. Поэтому закрались мысли, что можно проще реализовать то, что Вам нужно.
Если Вы посмотрите на «алгоритм», то увидите что если у Вас открыто более одного буфера, то разница по сравнению с :bd, только в том, что окно не закрывается(да и то это достигается с помощью плагина bufkill). Но если у Вас открыт один буфер в нескольких окнах, то закрываются только окна, буфер остается.

Возможно я погорячился и данные премудрости нужны только мне. Но мне так и правда намного удобнее!
Юзаю табы вместо буферов. О подобных проблемах не задумывался даже. Возможно, у буферов есть какие-то преимущества перед табами?
Summary:
A buffer is the in-memory text of a file.
A window is a viewport on a buffer.
A tab page is a collection of windows.


Поэтому буферы Вы тоже используете, даже если не знаете об этом.
Вы в любом случае используете буферы, любой открытый в Vim файл помещается в буфер. Другое дело, что Vim в отличии от большинства редакторов использует табы не по принципу «один файл, один таб», в Vim табы используются как контейнеры для окон(сплитов) и список буферов у всех табов общий.
Это я в курсе. Возможно я не верно задал вопрос. Я спрашиваю о workflow, а не о том, как оно работает.
Я думаю это дело вкуса. Когда я использовал табы как Вы, у меня постоянно возникали какие-то мелкие неприятности, то перед выходом из Vim оказывается что у меня куча не сохраненных файлов, про которые я уже и забыл и которые просто не отображались, то еще какая-то назойливая мелочь. Меня такие вещи дико раздражают. Да и окна от таба к табу разные, тоже не удобно. Используя MiniBufExplorer я получаю не менее функциональные вкладки чем у других редакторов и при этом я точно знаю какие файлы у меня открыты, какие из них имеют не сохраненные изменения, всегда вижу одни и теже окна и т.д. Вообщем я полностью контролирую ситуацию!
Спасибо за наводку на MiniBufExplorer. Нужно будет попробовать, сравнить.
Советую использовать вот этот вариант. Он лишен нескольких неприятных багов оригинального плагина. Вот мои настройки его внешнего вида(вставить в .vimrc;-) ), это значительно улучшит информативность:

" MiniBufExpl Colors
hi MBEVisibleActive guifg=#A6DB29 guibg=fg
hi MBEVisibleChangedActive guifg=#F1266F guibg=fg
hi MBEVisibleChanged guifg=#F1266F guibg=fg cterm=bold gui=bold
hi MBEVisibleNormal guifg=#5DC2D6 guibg=fg cterm=bold gui=bold
hi MBEChanged guifg=#CD5907 guibg=fg cterm=italic gui=italic
hi MBENormal guifg=#808080 guibg=fg cterm=italic gui=italic
Плюс

nmap <TAB> :bn<CR>

Очень удобно в связке с этом модулем

Хотя сам модуль предлагает готовые маппинги на ctrl+tab — но это надо тренировать пальцы растягиваться в шпагат :)
Ну у меня <Leader>l и <Leader>h. На вкус и цвет — все фломастеры разные :)
Ctrl+Tab — это очень просто когда CapsLock замаплен как второй третий Ctrl =) Такое положение вообще незаменимо при работе с вимом)
У меня тоже Caps замаплен на Ctrl. Просто я не люблю смещать руки с Home row(«asdf jkl;» клавиши), а тогда приходится Ctrl(Caps) использовать только с буквами и цифрами. У меня все буквы-цифры под Leader замаплены.
Не, двух кнопочная комбинация, даже если кнопки находятся очень близко, это уже много, на то он и vim, чтобы все самое важное делать по нажатию всего на одну кнопку и чтобы это прямо таки врезалозь в мозг настолько что потом в любом месте где вбивается текст не можешь понять что происходит и почему компьютер не делает то что ты ему говоришь, а пишет всякую ерунду :)

Как всегда есть исключения — комбинации вроде: dd, jj и т.п. — это удобно

Хотя если подумать что приходиться делать когда правяться тексты с русскими словами — то начинаешь понимать что если что то можно сделать даже двумя кнопками — это уже счастье, чего только cw стоит…
зачем писать всего три буквы, если можно написать свой плагин ;)
Эти трибуквы правда еще знать надо
Либо вы не прочитали статью, либо я и правда отвратительно пояснил чего же я пытался добиться(и добился). Но «сохранить все и выйти», это не то что делает мой мини-плагин. Кроме того синоним :wqa:xa, ах да — :xa сохраняет только измененные файлы, а :wqa — абсолютно все
UFO landed and left these words here
как раз прочитал. И у Вас в самом начале написано «Vim имеет множество команд для закрытия чего угодно и в каких угодно сочетаниях, но чего он не умеет так это закрывать все одной командой». По-моему Вы делаете что-то не понятное.Если надо сохранить все — :wqa, просто всё закрыть — :qa. Или Вы что-то другое делаете в плагине? Мне не понятно.
Пожалуй Вы правы, написано непонятно. Надо так — «Vim имеет множество команд для закрытия окон, буферов, и самого себя, но чего он не умеет так это закрывать окна, буферы и себя с помощью одной команды». Как Вы думаете, так лучше? Если да, сейчас исправлю.
как это не умеет? :qa, :wqa или :xa Закрывают всё. И буферы тоже. Или у Вас не закрывают?!
Ни одна их этих команд не закрывает буфер. Мне был нужен способ закрывать буферы в процессе работы не выходя из Vim. Но при этом более универсальный чем :BW(который закрывает буфер но не закрывает окно).
Таким образом пока у меня:
— Много буферов — закрываются буферы. (по :BW)
— Много окон, один буфер — закрываются окна. (по :c)
— Один буфер, одно окно — закрываем, буфер, открываем пустой буфер. (по :bw)
— Одно окно, пустой буфер — закрываем Vim(по :q)
Теперь я все делаю одной командой.
Сходное поведение вы увидите например в Sublime Text если у вас две колонки вкладок и вы начинаете нажимать Ctrl-W.
тьфу ты муты…
Ну так так бы и написали — «Мне был нужен способ закрывать буферы в процессе работы НЕ выходя из Vim»
Так а где написано иное? Я в комментария выше помянул это уже несколько раз. Ладно, та фраза в которую вы меня ткнули, её я пожалуй исправлю, может она и правду сбивает с толку, но ведь картинку я не зря же рисовал!
ну учитывая что я не один Вас не правильно понял, значит Вы не сформулировали свою идею должным образом.
Я думаю Вам :q вообще не надо было трогать. Вот именно она и сбивает с толку. ИМХО конечно же
UFO landed and left these words here
Есть еще полезная приятность в виме — Ctrl+A при использовании с :bw или :bd раскрывается в список всех буферов, так что простой вызов :bw Ctrl+A закроет все буферы и вим будет чист :)
О! Спасибо! Не то что мне было нужно, но штука полезная буду знать!

Простите, а макросы вы не записываете? Маппинг этого вашего плугина на q* очень меня озадачил, ведь хоткей q - это начало записи макроса на последующую клавишу.

Sign up to leave a comment.

Articles