Повторное использование экземпляра vim из терминала linux

Используя удаленную функцию в vim, можно ли повторно использовать экземпляр vim для загрузки нескольких файлов по мере необходимости.

Хорошо иметь этот объект из одного терминала.

Мне больше нравится иметь интерфейс на основе вкладок, который доступен в vim 7+ Сценарий должен быть

  • Открыть терминал
  • vim file1.cpp
  • Изменить - Сохранить - Ctrl + Z, чтобы получить приглашение
  • открыть другой файл
    • vim file2.cpp
  • Теперь у нас есть файлы 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, это сэкономит вам много времени.

Удачи!