Восстановление открытых файлов через Vi / Vim

StackOverflow https://stackoverflow.com/questions/1416572

  •  06-07-2019
  •  | 
  •  

Вопрос

Мне было интересно, доступна ли эта распространенная функция IDE.

Предположим, я открываю много файлов с помощью Vim, используя vsplit и split.Затем я все закрываю.

На следующий день я хочу восстановить эти файлы.То есть восстановите способ, которым они были открыты, без необходимости открывать каждый из них (используя split и vsplit) еще раз.

Возможно ли это?

Обновить:

Используя mksession! и source команды, отображающие команды в .vimrc файл, есть ли способ параметризовать сопоставления таким образом, чтобы записать конкретный файл?

например:

map <F2> :mksession! ~/vim_session @INSERT_HERE<cr> "Save session to @INSERTHERE file

Заранее спасибо

Это было полезно?

Решение

Вы можете сопоставить использование :mksession и :source с набором ключей для удобства сохранения и восстановления.Вот пример из my .vimrc , который использует F2 и F3:

map <F2> :mksession! ~/vim_session <cr> " Quick write session with F2
map <F3> :source ~/vim_session <cr>     " And load session with F3

Другие советы

Взгляните на :mksession команда, позволяющая создать session:

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

Вы могли бы рассмотреть возможность использования Экран GNU.Короче говоря:это менеджер окон командной строки, который позволяет пользователю получать доступ к нескольким отдельным сеансам терминала внутри одного сеанса терминала.Главное преимущество для меня заключается в том, что вы можете отсоединить сеанс, закрыть окно вашего терминала, а позже повторно подключить сеанс и продолжить работу.

Лучший подход, который я нашел, - это использовать плагин vim-session, http://github.com/xolox/vim-session который может быть установлен путем добавления:

Plugin 'xolox/vim-session'

в ваш .vimrc, за которым следует:

:PluginInstall

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

Я пользуюсь им уже несколько месяцев;настоятельно рекомендуется.

Возможно, вас заинтересует эта книга:

http://www.swaroopch.com/notes/Vim#Download

Это одна из первых вещей, которые они показывают вам в качестве примера того, насколько хорош Vim.;)

Также, <cr> расшифровывается как Возврат каретки.

Сессионный мастер http://www.vim.org/scripts/script.php?script_id=2010 предлагает более простую функциональность.Будьте осторожны с MiniBufExplorer.Это несовместимо, если вы не используете модифицированную версию, созданную andrew на vim_use (и даже тогда она совместима только наполовину).

Мое решение, как показано ниже, поместите их в файл .vimrc.ХТХ.

" session related.
" Default session is located `~/.session_'. The suffix `_' is a dirty
" solution, just like the one-element tuple `(tuple_eliment,)' in Python..
cnoremap <C-O> source ~/.session_
cnoremap <C-S> mksession! ~/.session_
nnoremap <silent> <C-S><C-S> :mksession! ~/.session_ <CR>

Кажется, это более сложно, но очень полезно, если у вас есть несколько сеансов для сохранения и загрузки.

P.S.
Здесь я перенимаю знакомый <Ctrl-S> и <Ctrl-O> ярлыки для сохранения и загрузки сеансов.ИМХО, это удобнее, чем протягивать руку к <Fn> Клавиша.;-)

Я предлагаю использовать vim-одержимость.Это намного лучше, чем по умолчанию mksession поскольку это остается в стороне от вас, все еще делая то, что вы хотите.

Основано на ответе hgmnz и расширяется для обновления.

Вы можете отбросить <cr> из сопоставления, и это переведет вас в командный режим для завершения выполнения команды.

map <F2> :mksession! ~/<will stop here and you can type>

При переходе в командный режим вы можете ввести %, затем нажать tab, и он развернется до абсолютного пути текущего файла, вы также можете ввести %: p: h и нажать tab, чтобы развернуться до каталога текущего файла.

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

map <F2> :mksession! ./.vim_sessions <cr> " Will save session to current buffers directory.
map <F3> :source ./.vim_sessions <cr>
:lcd " Changes the current's buffer directory

Также будьте осторожны с перезагрузкой сеансов, так как это выгружает все текущие загруженные буферы (http://vimdoc.sourceforge.net/htmldoc/starting.html#%3Amksession)

  1. Выгружает все загруженные в данный момент буферы.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top