Под «перемещением фрагмента текста в новый файл» я предполагаю, что вы имеете в виду вырезать этот фрагмент текста из текущего файла и создать новый файл, содержащий только этот текст.
Различные примеры:
:1,1 w new_file создать новый файл, содержащий только текст из строки № 1
:5,50 w newfile создать новый файл, содержащий текст из строки 5 в строку 50
:'a,'b w newfileсоздать новый файл, содержащий текст от метки aк меткеb
- установить свои оценки с помощью maи mbгде угодно
Выше только копирует текст и создает новый файл, содержащий этот текст. Затем вам нужно будет удалить позже.
Это можно сделать, используя тот же диапазон и 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! "- поместить содержимое безымянного register ( ") в буфер
- Функция bang (
!) предназначена для размещения содержимого перед текущей строкой. Это вызывает и пустую строку в конце файла. Без этого в верхней части файла есть пустая строка.