Какой лучший (Linux-совместимый) менеджер буферов / сессий для Vim? - PullRequest
5 голосов
/ 25 июля 2010

Есть ли хороший менеджер проектов / сессий для vim? сеанс (или проект) - это именованные списки файлов, например, «bitonic_sort» может идентифицировать файлы «~ / A / bitonic_sort.sk», «~ / B / bitonic_sort.smt2» и т. Д.

(обоснование) У меня есть проект, в котором мне нужно редактировать файлы из разных мест, и слишком громоздко открывать их вручную каждый раз, когда я возобновляю работу.(итак, похоже, что такие вещи, как nerdtree, возникшие в связи с этим родственным вопросом, Favorite (G) плагины / скрипты Vim? , не будут работать).Мне также нужны отдельные сеансы (т.е. списки файлов) для разных проектов, а не просто список недавних документов.

После того, как все документы загружены в виде буферов, любые улучшения для переключения между ними являются плюсом (например, начните печататьимя и соответствующие документы отображаются).Заранее спасибо.

Ответы [ 3 ]

8 голосов
/ 25 июля 2010

Vim имеет встроенный менеджер сессий. Чтобы сохранить текущий сеанс, используйте:

:mks session1.vim

Это в основном создает сценарий Vim с именем session1.vim, который восстановит ваш открытый файл, если вы создадите его или запустите Vim так:

vim -S session1.vim

Чтобы перезаписать сохраненные сеансы, используйте :mks! your_saved_session.vim. Объедините с пользовательской картой ключей, и это будет решением. Подробнее о сеансе Vim читайте :help :mks. В Vim также есть менеджер views , который очень похож. Читайте больше от: :help :mkview

Для переключения между буферами вы можете использовать FuzzyFinder ; но я предпочитаю эту карту ключей:

nmap <C-tab> :bn<CR>
imap <C-tab> <ESC>:bn<CR>i

Добавьте его к .vimrc, и я могу использовать Ctrl + Tab для переключения между буферами так же, как вкладки Firefox. Надеюсь, что это поможет.

2 голосов
/ 25 июля 2010

Я не совсем уверен, что именно вы просите ... но если вы хотите включить завершение табуляции при открытии файлов в vim, добавьте это в ваш ~/.vimrc:

" Auto-complete file names after <TAB> like bash does.
set wildmode=longest,list
set wildignore=.svn,CVS,*.swp

Кроме того, взгляните на экран .Со страницы man:

Когда вызывается screen , он создает одно окно с оболочкой (или указанную команду) и затем выходит из вашего пути, так чтоВы можете использовать программу, как обычно.Затем, в любое время, вы можете создавать новые (полноэкранные) окна с другими программами в них (включая другие оболочки), убивать существующие окна, просматривать список окон, включать и выключать выходной журнал, копировать и вставлять текстмежду окнами, просматривать историю прокрутки, переключаться между окнами любым удобным для вас способом и т. д. Все окна запускают свои программы совершенно независимо друг от друга.Программы продолжают работать, когда их окно в настоящее время не видно и даже когда весь сеанс экрана отсоединен от пользовательского терминала.Когда программа завершает работу, экран (по умолчанию) убивает окно, в котором оно находилось.Если это окно было на переднем плане, дисплей переключается на предыдущее окно;если ничего не осталось, экран выходит.

Это почти то же самое, что открыть несколько xterms, за исключением того, что в отличие от графических xterms вы можете получить доступ к сеансу экрана, если у вас есть удаленный доступ к вашему компьютеру (например, посредством sshing к нему).Вы можете оставить несколько разных экземпляров vim на отдельных экранах со всеми файлами, которые хотите открыть, и никогда не выходить из них.

Самая базовая настройка, которую я использую, - это одно окно vim, одно окно компиляции и одно тестирование./ окно отладки.


И поскольку мы говорим о vim, ознакомьтесь с этим сообщением: Опубликуйте свою конфигурацию Vim. Множество интересных настроек и хитрых вещей.

0 голосов
/ 06 февраля 2017

Вы можете попробовать плагин vim-workspace, его функции управления сессиями автоматизированы и относительно просты (по сравнению с vim-session): https://github.com/thaerkh/vim-workspace

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...