Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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)

  1. Выгружает все загруженные в данный момент буферы.