Простой способ записи диапазона строк в файл и их удаления
после этого запустить команду
:$-9,$w path | '[,']d
Однако для частого использования неудобно, если имя файла не является постоянным.
Ниже приведена функция MoveToFile()
, реализующая команду с тем же
название. Все это заключает в себе следующие два шага: написать ряд строк
используя команду :write
(см. :help :w_f
, :help :w!
, :help :w_a
), затем
удалить этот диапазон. 1
command! -nargs=* -complete=file -range=% -bang -bar MoveToFile
\ :<line1>,<line2>call MoveToFile(<q-args>, <bang>0)
function! MoveToFile(fname, overwrite) range
let r = a:firstline . ',' . a:lastline
exe r 'w' . ' !'[a:overwrite] . fnameescape(a:fname)
exe r 'd'
endfunction
Теперь вы можете использовать приведенную выше команду для охвата всех частых случаев использования. За
Например, чтобы переместить визуально выбранный диапазон строк в файл, используйте отображение
:vnoremap <leader>m :MoveToFile
Это отображение запускает полунаполненную команду, вызывающую :MoveToFile
диапазон линий, выбранных в визуальном режиме ('<,'>
). Вам нужно только набрать
имя файла и нажмите Введите .
Если вы часто делаете это для последних десяти строк буфера, создайте аналогичный
отображение только для этого случая:
:nnoremap <leader>m :$-9,$MoveToFile
1 Указанные строки удаляются в регистр по умолчанию
перезаписывая его предыдущее содержимое. Удалить строки, не влияя
регистры изменяют последнюю команду в MoveToFile()
на
exe r 'd_'
В этом случае :delete
использует регистр черной дыры (см. :help :d
и :help
"_
) вместо регистра по умолчанию.