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