Під "переміщення фрагмента тексту до нового файлу" я припускаю, що ви маєте на увазі вирізати цей фрагмент тексту з поточного файлу та створити новий файл, що містить лише цей текст.
Різні приклади:
: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! "- помістіть вміст неназваного регістра ( ") у буфер
- Баг (
!) існує так, що вміст ставиться перед поточним рядком. Це викликає і порожній рядок у кінці файлу. Без нього вгорі файлу є порожній рядок.