Под «перемещением фрагмента текста в новый файл» я предполагаю, что вы имеете в виду вырезать этот фрагмент текста из текущего файла и создать новый файл, содержащий только этот текст.
Различные примеры:
: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 (
!
) предназначена для размещения содержимого перед текущей строкой. Это вызывает и пустую строку в конце файла. Без этого в верхней части файла есть пустая строка.