После выбора диапазона строк с V
команда, я хотел бы удалить каждую строку файла, который НЕ выбран, также - путь состоит в том, чтобы инвертировать выбор - выбирают каждую строку, которая не выбрана?
Как как
:g!/FOO/d
удаляет каждую строку, которая НЕ содержит НЕЧТО.
Если я имел диапазон в виду и хотел использовать его инверсию:
'a,'b
Я должен был бы использовать два диапазона:
1,'a-1
и
'b+1,$
Я подозреваю, что это не может быть сделано за один шаг - но это было бы хорошо!
Сначала создайте следующее отображение (например, связанный с <F4>
ключ)
map <F4> :<C-U>1,'<-1:delete<CR>:'>+1,$:delete<CR>
затем, после выбора диапазона в визуальном режиме, просто нажмите <F4>
инициировать связанную команду. Команда может быть легко объяснена в частях:
:
"Перейдите к режиму командной строки.<C-U>
"Удалите все символы между позицией курсора и начало строки.1,'<-1
"Specifiy диапазон от первой строки файла к строке перед запуском текущего выбора.:delete<CR>
"Удалите (ранее указанный диапазон строк).:'>+1,$:delete<CR>
"Удалите строки в диапазоне"'>+1,$
", т.е. от строки после конца выбора в конец файла."*yggdG"*p
что означает...
"*y " yank it to the selection register
ggdG " delete everything
"*p " and paste the selection again
так как 'инвертирование' означает в основном создавать 'мультивыборы' (область прежде и после исходного выбора), я искал vimscripts снова http://www.vim.org/scripts/script.php?script_id=953. попробуйте это.
There are a number of operations to very
easily manipulate selections such as modifying
the regions (add/delete/inverte/clear), hiding,
refreshing, saving and restoring etc."