4

Допустим, я захожу в bash, открываю файл в vi, затем с помощью alt-f2 открываю новый терминал. После входа я перехожу ко второму файлу и открываю его в vi. Как я могу CnP между этими двумя файлами?

Я нашел это на wikia.com. Я не знаком с этой командой shift-8-yy. Я следую за vimtutor и использую виртуальный режим. Я попробовал эту последовательность и был неудачным.

И я прочитал это о регистрах. Я нашел упоминание об использовании double_quote-p для «установки» или вставки регистра, но это не работает в другом файле. Второй файл сообщил, что регистр пуст.

Кроме того, я читал в документах VIM, можно открыть несколько файлов на разделенных экранах. Это может быть путь к решению. Необходимость, с которой я часто сталкиваюсь, заставляет меня переходить в другое окно bash, чтобы найти файл, а затем копировать между ними. Принимая во внимание, что я полагаю, разделенное окно VIM полезно для файлов в том же каталоге.

6 ответов6

3

Неудивительно, что это не сработало для вас. Вы неправильно пишете команды. Это не смена - 8- й - у. И не двойная цитата - с. Команды:

  • Вырвать текущую строку в буфер обмена X11: " + y y
  • Вставить из буфера обмена X11: " + p
  • Верните текущую строку в X11 (основной) выбор: " * y y
  • Вставить из X11 (основной) выбор: " * p

Измените часть движения в соответствии со вкусом. vim должен знать, что X-сервер там, конечно. Таким образом, вам придется явно указать ему, где находится X-сервер и какой дисплей использовать на этом сервере, если вы не запускаете его из сеанса X, где он неявно наследует переменную среды DISPLAY и т.

1

Возможно, вы захотите установить пакет "мышь общего назначения" (gpm), который позволяет использовать копирование и вставку мыши без графического интерфейса.

1

vi , включенный во многие дистрибутивы GNU/Linux, является крошечной версией Vim, которая была скомпилирована без многих функций Vim, включая интерфейс с буфером обмена X Window System. Даже их программа vim терминальном режиме часто создается без поддержки X. Без поддержки X ваши vi и vim не смогут получить доступ к буферу обмена, а вы не сможете копировать и вставлять различные экземпляры программы.

Одним из решений этой проблемы является запуск программы gvim в режиме терминала с помощью опции -v , как

$ gvim -v your_file

Чтобы не вводить это или не забывать вводить это каждый раз, вы можете добавить эти псевдонимы в ваш файл ~/.bashrc:

alias vim='gvim -v'
alias vi='gvim -v'

Как только вы используете версию Vim, скомпилированную с поддержкой X, вы можете использовать команды, описанные в ответе JdeBP. Вы также можете прочитать об этих командах во внутреннем руководстве пользователя Vim и справочном руководстве, выполнив

:help 04.7
:help 09.3
1

Вы не можете сделать это без посторонней помощи стандартным общим способом с VIM, который у вас есть.

Сначала убедитесь, что у вас есть хорошая версия, скомпилированная и установленная в вашем дистрибутиве.

Тогда я бы предложил либо использовать gvim с отдельными окнами, либо использовать vim -o для открытия нескольких файлов и просто между кадрами, используя ^W^W для переключения, а затем копировать и вставлять.

1

Поскольку вы, кажется, используете консоль (без окон X, поэтому многие другие ответы не имеют значения), вы можете просто отредактировать несколько файлов в одном сеансе vim. Попробуйте :split ... чтобы редактировать два файла одновременно и использовать буферы вырезания vim для перемещения текста между ними.

В качестве альтернативы вы можете использовать gpm, а также вырезать и пройти между консолями.

0

Я не знаю насчет vi, но с помощью emacs вы можете подключить другие терминалы к первичному сеансу emacs с помощью emacsclient и тогда все они будут использовать одно и то же кольцо уничтожения (и буферы и т.д.), Чтобы вы могли убивать и восстанавливать между ними.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .