Comments 40
есть удобная команда — ZZZ.
Если не секрет, то как вы форматировали текст и каким спеллчекером пользовались? У меня так даже специально не получится :(
:xa — не то?
Для навигации по файлам я использую плагин MiniBufExplorer. На основе списка открытых буферов он создает подобие табов, таким образом если я хочу закрыть файл и не видеть его в MiniBufExplorer, мне необходимо не просто скрыть буфер или закрыть окно с буфером, а удалить буфер полностью(что и делают команды :bw, :bd и тд.).
:q делает текущий буфер невидимым и если есть не сохраненные буферы — покажет в окне следующий из них. Если открыто несколько окон :q — просто закроет текущее окно, буфер останется нетронутым, а если окно одно и все буферы сохранены — закроет Vim
:q делает текущий буфер невидимым и если есть не сохраненные буферы — покажет в окне следующий из них. Если открыто несколько окон :q — просто закроет текущее окно, буфер останется нетронутым, а если окно одно и все буферы сохранены — закроет Vim
Я совсем не понял в чем Ваша проблема. Я закрываю окна — :q, буферы — :bd и горя не знаю.
Это и не проблема вовсе, просто «свистелки, перделки» которые облегчают мне жизнь.
Честно говоря, я затрудняюсь ответить лучше чем я это сделал в статье, если Вам не сложно вы могли бы попробовать мой вариант и посмотреть в чем разница. Благо засунуть функцию в vimrc и сделать на нее меппинг не сложно. Буду рад узнать ваше мнение.
Честно говоря, я затрудняюсь ответить лучше чем я это сделал в статье, если Вам не сложно вы могли бы попробовать мой вариант и посмотреть в чем разница. Благо засунуть функцию в vimrc и сделать на нее меппинг не сложно. Буду рад узнать ваше мнение.
вы могли бы попробовать мой вариант и посмотреть в чем разница
Разница между чем? Я не понимаю, какую задачу Вы решаете. Перечитывал несколько раз — ясности не прибавилось. Описали бы пример: у меня открыто 3 файла, один не сохранен, на экране 2 сплита — хочу закрыть все и сохранить одним махом. Как-то так.
Мне кажется, Вы что-то усложняете. Я более года (или более 2х лет, не помню) использую vim и никогда не использовал команды :bw, :bun, :close. Поэтому закрались мысли, что можно проще реализовать то, что Вам нужно.
Разница между чем? Я не понимаю, какую задачу Вы решаете. Перечитывал несколько раз — ясности не прибавилось. Описали бы пример: у меня открыто 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.
Поэтому буферы Вы тоже используете, даже если не знаете об этом.
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
Плюс
Очень удобно в связке с этом модулем
Хотя сам модуль предлагает готовые маппинги на ctrl+tab — но это надо тренировать пальцы растягиваться в шпагат :)
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?
зачем писать всего три буквы, если можно написать свой плагин ;)
Эти трибуквы правда еще знать надо
Эти трибуквы правда еще знать надо
Либо вы не прочитали статью, либо я и правда отвратительно пояснил чего же я пытался добиться(и добился). Но «сохранить все и выйти», это не то что делает мой мини-плагин. Кроме того синоним :wqa — :xa, ах да — :xa сохраняет только измененные файлы, а :wqa — абсолютно все
как раз прочитал. И у Вас в самом начале написано «Vim имеет множество команд для закрытия чего угодно и в каких угодно сочетаниях, но чего он не умеет так это закрывать все одной командой». По-моему Вы делаете что-то не понятное.Если надо сохранить все — :wqa, просто всё закрыть — :qa. Или Вы что-то другое делаете в плагине? Мне не понятно.
Пожалуй Вы правы, написано непонятно. Надо так — «Vim имеет множество команд для закрытия окон, буферов, и самого себя, но чего он не умеет так это закрывать окна, буферы и себя с помощью одной команды». Как Вы думаете, так лучше? Если да, сейчас исправлю.
как это не умеет? :qa, :wqa или :xa Закрывают всё. И буферы тоже. Или у Вас не закрывают?!
Ни одна их этих команд не закрывает буфер. Мне был нужен способ закрывать буферы в процессе работы не выходя из Vim. Но при этом более универсальный чем :BW(который закрывает буфер но не закрывает окно).
Таким образом пока у меня:
— Много буферов — закрываются буферы. (по :BW)
— Много окон, один буфер — закрываются окна. (по :c)
— Один буфер, одно окно — закрываем, буфер, открываем пустой буфер. (по :bw)
— Одно окно, пустой буфер — закрываем Vim(по :q)
Теперь я все делаю одной командой.
Сходное поведение вы увидите например в Sublime Text если у вас две колонки вкладок и вы начинаете нажимать Ctrl-W.
Таким образом пока у меня:
— Много буферов — закрываются буферы. (по :BW)
— Много окон, один буфер — закрываются окна. (по :c)
— Один буфер, одно окно — закрываем, буфер, открываем пустой буфер. (по :bw)
— Одно окно, пустой буфер — закрываем Vim(по :q)
Теперь я все делаю одной командой.
Сходное поведение вы увидите например в Sublime Text если у вас две колонки вкладок и вы начинаете нажимать Ctrl-W.
тьфу ты муты…
Ну так так бы и написали — «Мне был нужен способ закрывать буферы в процессе работы НЕ выходя из Vim»
Ну так так бы и написали — «Мне был нужен способ закрывать буферы в процессе работы НЕ выходя из Vim»
Так а где написано иное? Я в комментария выше помянул это уже несколько раз. Ладно, та фраза в которую вы меня ткнули, её я пожалуй исправлю, может она и правду сбивает с толку, но ведь картинку я не зря же рисовал!
Есть еще полезная приятность в виме — Ctrl+A при использовании с :bw или :bd раскрывается в список всех буферов, так что простой вызов
:bw Ctrl+A
закроет все буферы и вим будет чист :)Простите, а макросы вы не записываете? Маппинг этого вашего плугина на q*
очень меня озадачил, ведь хоткей q
- это начало записи макроса на последующую клавишу.
Sign up to leave a comment.
Vim :bw, :bd, :bun, :quit, :close. Что со всем этим делать?