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

StackOverflow https://stackoverflow.com/questions/1000804

Вопрос

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

Было бы неплохо иметь эту возможность в одном и том же экземпляре терминала.

Я более хочу иметь интерфейс на основе вкладки, который доступен в Vim 7+, сценарий должен быть

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

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top