Vi/Vim восстанавливает открытые файлы
Мне было интересно, доступна ли эта общая функция IDE.
Предположим, что я открываю много файлов с помощью Vim, используя vsplit
и split
. Затем я закрываю все.
На следующий день я хочу восстановить эти файлы. То есть, восстановите способ их открытия, не открывая их (используя split
и vsplit
) снова.
Возможно ли это?
UPDATE:
Используя команды mksession!
и source
, команды отображения в файле .vimrc
, есть ли способ параметризовать сопоставления, чтобы записать определенный файл?
например:
map <F2> :mksession! ~/vim_session @INSERT_HERE<cr> "Save session to @INSERTHERE file
Заранее спасибо
Ответы
Ответ 1
Вы можете сопоставить с помощью: mksession и: source набор ключей для удобства сохранения и восстановления. Вот пример из моего .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
Ответ 2
Посмотрите на команду :mksession
, чтобы создать session
:
В сеансе хранятся представления для всех окна, а также глобальные настройки. Вы можете сохранить сеанс, и когда вы восстановить его позже макета окна выглядит одинаково. Вы можете использовать сеанс быстро переключаться между проектов, автоматически загружая файлы, которые вы в последний раз работали в проект.
Ответ 3
Вы можете использовать экран GNU. Короче: это командная строка Window Manager, которая позволяет пользователю получать доступ к нескольким отдельным сеансам терминала в рамках сеанса с одним терминалом. Главное для меня в том, что вы можете отсоединить сеанс, закрыть окно терминала, а затем снова присоединить сеанс и продолжить работу.
Ответ 4
Вам может быть интересна эта книга:
http://www.swaroopch.com/notes/Vim#Download
Это одна из первых вещей, которые они показывают вам как пример того, как великий Vim.;)
Кроме того, <cr>
означает возврат каретки.
Ответ 5
SessionMan http://www.vim.org/scripts/script.php?script_id=2010
предлагает более легкую функциональность. Будьте осторожны с miniBufExplorer. Это несовместимо, если вы не используете модифицированную версию, сделанную andrew на vim_use (и даже тогда, она только наполовину совместима)
Ответ 6
Мое решение такое, как показано ниже, поместите их в файл .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>
.; -)
Ответ 7
Лучший подход, который я нашел, - использовать плагин vim-session, http://github.com/xolox/vim-session, который можно установить, добавив:
Plugin 'xolox/vim-session'
на ваш .vimrc, а затем:
:PluginInstall
Этот плагин поддерживает несколько сеансов: вы идентифицируете сеанс по имени и затем управляете им с этим именем. Сессии можно добавлять, удалять, обновлять, перечислять,...
Я использую его уже несколько месяцев; настоятельно рекомендуется.
Ответ 8
Я предлагаю использовать vim-obsession. Это намного лучше, чем значение по умолчанию mksession
, поскольку оно остается вне вашего, но все еще делает то, что вы хотите.
Ответ 9
На основе ответа hgmnz и расширения для обновления.
Вы можете удалить <cr>
из отображения, и это приведет вас в командный режим, чтобы завершить команду.
map <F2> :mksession! ~/<will stop here and you can type>
При переходе в командном режиме вы можете ввести%, затем нажать вкладку, и она будет расширяться до текущего абсолютного пути файла, вы также можете ввести%: p: h и нажать вкладку, чтобы развернуть ее до текущего каталога.
Вы также можете сохранить каждую сессию в рабочем каталоге и с помощью локальных каталогов буферов вы можете иметь несколько сеансов для рабочих каталогов.
map <F2> :mksession! ./.vim_sessions <cr> " Will save session to current buffers directory.
map <F3> :source ./.vim_sessions <cr>
:lcd " Changes the current buffer directory
Также будьте осторожны при перезагрузке сеансов, так как он выгружает все текущие загруженные буферы (http://vimdoc.sourceforge.net/htmldoc/starting.html#%3Amksession)
- Выгружает все загруженные в данный момент буферы.