повторно использовать экземпляр vim из терминала Linux
Вопрос
Используя функцию удаленного доступа в vim, можно ли повторно использовать экземпляр vim для загрузки нескольких файлов по мере необходимости.
Было бы неплохо иметь эту возможность в одном и том же экземпляре терминала.
Я более хочу иметь интерфейс на основе вкладки, который доступен в Vim 7+, сценарий должен быть
- Открыть терминал
- vim файл1.cpp
- Редактировать – Сохранить – Ctrl+Z, чтобы перейти к подсказке.
- открыть другой файл
- vim файл2.cpp
- Теперь у нас есть файлы file1.cpp и file2.cpp, открытые в одном редакторе.
Это возможно?!
Решение
У меня есть для вас пара предложений, хотя ни одно из них не совсем то, о чем вы говорите.Первое - это НЕРД-дерево, который предоставляет вам удобный файловый браузер с древовидной структурой для открытия других файлов.Очень кстати.Еще я настроил горячую клавишу (ctrl+o
) открыть НЕРД-дерево для меня.Я сохраняю псевдоним любого проекта, в котором участвую. ~/curr/trunk
, поэтому это всегда работает для меня:
map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>
Еще я бы посоветовал отказаться от Ctrl+Z.Это несколько неуклюже, и все, кого я знаю, кто использует этот метод, имеют тенденцию теряться и заканчивать тем, что в фоновом режиме работают 3 или 4 vim.Посмотрите, как открыть ракушку самостоятельно.Я использую карту для ;s для выполнения сценария оболочки:
map ;s :!~/.vim/shell.sh<CR>
Что выполняет:
#!/bin/sh
/usr/local/bin/bash -l;
У меня также есть немного магии в моем .profile, чтобы было видно, что я нахожусь в VIM:
if [ "$VIMRUNTIME" != "" ] ; then
export PS1="\u@\h \W \t$ vim> "
fi
</2 цента>
Другие советы
Я не уверен, что это можно сделать именно так, как вы указываете, но что-то очень похожее, вероятно, можно сделать с помощью сервера vim, работающего на вашем локальном компьютере.
Посмотрите в :help remote.txt
в Виме.
Если ваша версия vim была скомпилирована с помощью +clientserver
вы можете использовать vim для создания сервера vim, а затем выполнять на нем команды, напримероткрытие другого файла.
А --servername
коммутатор может создать новый сервер, а --remote
коммутатор может отправлять на него дополнительные команды или файлы.
например
vim --servername test file1.txt
vim --servername test --remote file2.txt
Я посмотрел, и vim, который я использую в стандартной комплектации xubuntu на одном из моих компьютеров, не имеет его, но есть некоторые инструкции. здесь это может помочь, если оно у вас скомпилировано.Если это не так, возможно, можно установить gvim и символические ссылки (поскольку gvim включен по умолчанию) или скомпилировать двоичные файлы из исходного кода.
Редактировать:
Я больше играл с gvim, и мне кажется, что сделать это в терминале невозможно.Control-Z приостанавливает задание на уровне процесса.Я думал, что это может работать с экраном, но связь, похоже, не происходит, если gvim не запускается в графическом окне.
Это легко сделать, если вы скомпилировали VIM с помощью +clientserver
, как Энди предложил в предыдущем ответе.
Я сделал следующее:
Я запустил VIM как сервер:
vim --servername abc
Я приостановил это с помощью CTRL+Z
и сделал:
vim --servername abc --remote ~/.cshrc
fg
Теперь ВИМ имел ~/.cshrc
открыть.
Затем я сделал:
vim --servername abc --remote ~/.aliases
fg
Теперь у VIM был один буфер с ~/.cshrc
и еще один с ~/.aliases
.
Затем я сделал:
vim --servername abc --remote-tab ~/foo_bar
fg
И теперь у меня в ВИМе была одна вкладка с открытыми двумя предыдущими буферами и еще одна вкладка с ~/foo_bar
открыть.
В случаях вызова VIM работал в терминале, а не как графический интерфейс.
Вы можете разделить текущий экран и открыть два (или более) файла следующим образом:
Для горизонтального разделения выполните:
:sp 'filename'
и для вертикального разделения выполните:
:vsp 'filename'
Чтобы переключаться между ними, нажмите Ctrl+W, затем с помощью клавиши со стрелкой перейдите к файлу, который вы хотите отредактировать.
Кроме того, если вы хотите просто переключать файлы (и открывать только один), вы можете сделать это:
:e 'filename'
Добрый день,
Или, если вы хотите иметь несколько файлов, но использовать все окно Vim для одного файла за раз, вы можете просто ввести
:e 'filename'
чтобы открыть новый файл.Вы можете сделать это несколько раз.Чтобы увидеть, что у вас открыто в данный момент, введите
:ls
Чтобы переключаться между открытыми файлами, вы можете использовать cntl-^ (shift-cnt-6), и это будет чередовать основные и второстепенные файлы (отмечены символами % и # в списке файлов).
Или вы можете войти
:n b
где n — номер в начале файла, который вы хотите видеть в списке, отображаемом командой ls.
ХТХ
ваше здоровье,
Вы можете установить hidden
функция в vim, позволяющая открывать несколько файлов:
:set hidden
Тогда вы сможете открыть столько файлов, сколько захотите, не утруждая себя сохранением их каждый раз, когда захотите переключить «буфер»:
:e 'filename'
У вас есть несколько команд для навигации по буферам:
:bnext
:bprev
:buffers
Конечно, как упоминал samoz, вы можете разделить экран, чтобы видеть несколько буферов в одном окне.
Я бы посоветовал прочитать этот хорошее введение в vim сэкономит вам много времени.
Удачи!