Я работаю с двумя файлами, и мне нужно скопировать несколько строк из одного файла и вставить в другой файл. Я знаю, как скопировать (yy) и вставить (p) в один файл. Но это не работает для разных файлов. Как это сделать?
Кроме того, есть ли способ вырезать-вставить? Я пробовал поискать в Google, но большинство ресурсов говорят только о копировании-вставке.
vim
copy-paste
vi
cut
Мача
источник
источник
Ответы:
Поскольку вы уже знаете, как вырезать / восстановить текст, вот несколько идей для его вставки в другой файл:
:e /path/to/other/file
) и вставьте егоОткройте оба файла вместе в разделенном окне и перемещайтесь между ними, используя Ctrl+ w, Up/ Downлибо:
vi -o /path/to/file1 /path/to/file2
источник
Ctrl
+w
,s
.:sp myfile
которая разбивается по горизонтали и открывает указанный файл, но как мне быть, если я предпочел бы разбить окно по вертикали?Если вы используете Vim в Windows, вы можете получить доступ к буферу обмена (MS copy / paste), используя:
"*dd - вырезать линию (или 3DD, чтобы разрезать три линии)
"*yy - скопировать строку (или 3гг, чтобы скопировать три строки)
"*p - вставить строку (и) в строку после курсора
"*P - вставить строку (и) в строку перед курсором
Позволяет вставлять между отдельными окнами Vim или между приложениями Vim и ПК ( Блокнот , Microsoft Word и т. Д.).
источник
+
как регистр буфера обмена кроссплатформенной системы (Windows и Linux) против*
только для Windows (в Windows+
работает так же, как*
).Используйте варианты
d
какdd
вырезать.Чтобы записать диапазон строк в другой файл, вы можете использовать:
Где
<n>
и<m>
- это числа (или символы), обозначающие диапазон строк.Для использования буфера обмена рабочего стола, посмотрите на
+g
команды.источник
ma
, переход к последней строкеmb
. Затем добавьте a'
к букве метки, когда используете:'a,'b w filename
Вы можете открыть другой файл и набрать
:r file_to_be_copied_from
. Или вы можете буферизовать. Или перейдите к первому файлу, перейдите на строку, которую хотите скопировать, введите"qY
, перейдите к файлу, который хотите вставить, и введите"qP
."
имя_буфера, копирует в буфер.Y
это дергает иP
ставится. Надеюсь, это поможет!источник
Вот один из способов сделать это;
Вы можете иметь оба файла для просмотра тоже. Разделите экран, например, Ctrl+ w s.
Что касается резки, dрежет и помещает вырезанный материал в буфер янки. ddбудет "разрезать" линию.
источник
Все это отличные предложения, но если вы знаете расположение текста в другом файле, используйте sed с легкостью.
:r! sed -n '1,10 p' < input_file.txt
Это вставит 10 строк в уже открытый файл в текущей позиции курсора.источник
:r ! head -n2 file.py
При редактировании файла отметьте, где вы хотите использовать начало и конец
ma
- устанавливаетa
оценкуmb
- устанавливаетb
оценкуЗатем, чтобы скопировать это в другой файл, просто используйте
w
команду:источник
Обновление 2017-05:
Я только что обнаружил, что если вы добавите следующую строку в ваш файл vimrc,
затем Vim использует системный буфер обмена.
Я только что обнаружил, что янки не будут работать на пути, где я копирую содержимое между разными окнами экземпляра Vim. (По крайней мере, это не работает, основываясь на моих знаниях Vim. Я не знаю, есть ли другой способ включить его).
Путь «янки» работает только в том случае, если в моем окне открыто несколько файлов в одном окне.
Если вы хотите это сделать, вам лучше использовать способ вырезания-копирования ОС, например Ctrl+ x, Ctrl+ c(под Windows).
источник
Эти переотображения работают как очарование для меня:
Поэтому, когда я нахожусь в визуальном режиме, я выбираю нужные строки и нажимаю Ctrl+, cа затем Ctrl+v чтобы вставить текст в файл получателя. Вы также можете использовать "* y", но я думаю, что иногда это трудно запомнить.
Это также полезно для копирования текста из Vim в буфер обмена.
Источник: копирование и вставка между сеансами с использованием временного файла.
источник
Копирование текста между двумя буферами (== файлами), которые открываются в одном и том же экземпляре Vim, не является проблемой:
Просто нажмите в одном буфере с помощью y(при условии, что вы пометили область для копирования в визуальном режиме раньше), а затем вставьте в другой буфер с помощьюp . Он также работает с разными вкладками, если они находятся в одном и том же экземпляре Vim.
Как открыть два файла в одном экземпляре Vim, зависит от вашей системы:
vim file1 file2
--remote-silent
опцию, чтобы все файлы открывались в одном экземпляре.Если вы открыли два файла в двух разных экземплярах Vim, то вам нужно перейти к системному буферу обмена: в первом экземпляре Vim скопируйте текст в системный буфер обмена, используя
"+y
(опять же, отметьте область, которую нужно восстановить в визуальном режиме, прежде чем ), а затем перейти ко второму Vim и вставить в буфер обмена есть:"+p
.источник
Цель : сохранить часть одного файла в другой файл.
Решение :
Сохранить выделенный текст в новый файл. Введите :wSpaceи имя нового файла. На самом деле вы увидите
:'<,'>w new.txt
Затем нажмите Enter
источник
Мой сценарий состоял в том, что мне нужно скопировать n строк в середине, n неизвестно, из файла 1 в файл 2.
источник
:echo has('clipboard')
должен вернуться1
0
(например, Mac OS X, по крайней мере v10.11 (El Capitan), v10.9 (Mavericks) и v10.8 (Mountain Lion) - поставляется с версией Vim, в которой отсутствует поддержка буфера обмена), вам необходимо установить Версия Vim с поддержкой буфера обмена, скажем, черезbrew install vim
(не забудьте перезапустить ваш терминал (ы) после установки)PS:
set mouse+=a
к своей.vimrc
- это позволит вам выбирать строки в Vim с помощью мыши, не выбирая посторонние элементы (например, номера строк и т. д.). ВНИМАНИЕ: блокируется возможность копирования текста, выделенного мышью. в системный буфер обмена от Vim .источник
Пример: fileA и fileB - начать с fileA в строке 25, скопировать 50 строк и вставить в файл B
источник
Опция ниже работает большую часть времени, а также для вставки позже.
Выдернутые строки будут сохранены в буфере
'x'
. Это может быть использовано в любом месте редактирования.Чтобы вставить строки в другой файл,
Пример: введите приведенную ниже команду в текущем редактировании
Завершить операцию
открыть файл 1:
-в настоящее время открыть второй файл из текущего редактирования
-переместите курсор в строку, где вы должны вставить
- строки из буфера
'*a*'
будут скопированы после текущей позиции курсораисточник
Если вы хотите скопировать часть файла и вставить это содержимое в середину другого файла, вы можете сделать это следующим образом.
Пример:
Или
Пример:
Теперь строки копируются в другой файл. Если вы хотите удалить эти строки после копирования, вы можете сделать
Или
Теперь перейдите к другому файлу. Затем наведите курсор на строку, куда вы хотите вставить.
Тип
Теперь содержимое временного файла вставлено сюда. Вы можете удалить временный файл из самой командной строки после вставки содержимого.
Это поможет, если вы хотите скопировать и вставить несколько раз.
источник
Другой способ - открыть два файла в двух разделенных буферах и использовать следующий «фрагмент» после визуального выбора интересующих строк.
источник
Войдите в командный режим и запустите
Например, чтобы извлечь строки
20-30
изfilename
текущего открытого файлаисточник