Под "перемещением фрагмента текста в новый файл" я предполагаю, что вы имеете в виду вырезать этот фрагмент текста из текущего файла и создать новый файл, содержащий только этот текст.
Различные примеры:
:1,1 w new_file
для создания нового файла, содержащего только текст из строки номер 1
:5,50 w newfile
для создания нового файла, содержащего текст от строки 5 до строки 50
:'a,'b w newfile
для создания нового файла, содержащего текст от метки a
до метки b
- установить свои оценки с помощью ма и мб, где вам нравится
Выше только копирует текст и создает новый файл, содержащий этот текст. Затем вам нужно будет удалить позже.
Это можно сделать, используя тот же диапазон и команду d
:
:5,50 d
чтобы удалить текст из строки 5 в строку 50
:'a,'b d
чтобы удалить текст от метки a
до метки b
Или используя dd для случая с одной строкой.
Если вы вместо этого выделите текст в визуальном режиме, а затем нажмете :
пока текст выделен, в командной строке вы увидите следующее:
:'<,'>
Что указывает на выделенный текст. Затем вы можете расширить команду до:
:'<,'>w >> old_file
Который будет добавлять текст в существующий файл. Затем удалите, как указано выше.
Один лайнер:
:2,3 d | new +put! "
Разбивка:
:2,3 d
- удалить строки со 2 по 3
|
- технически это перенаправляет вывод первой команды на вторую команду, но поскольку первая команда ничего не выводит, мы просто объединяем команды в цепочку
new
- открывает новый буфер
+put! "
- поместить содержимое безымянного регистра ("
) в буфер
- Взрыв (
!
) есть ли так, что содержимое ставится перед текущей строкой. Это вызывает и пустую строку в конце файла. Без этого есть пустая строка в верхней части файла.