Как инвертировать выбор в энергии?

После выбора диапазона строк с V команда, я хотел бы удалить каждую строку файла, который НЕ выбран, также - путь состоит в том, чтобы инвертировать выбор - выбирают каждую строку, которая не выбрана?

Как как

:g!/FOO/d

удаляет каждую строку, которая НЕ содержит НЕЧТО.

Если я имел диапазон в виду и хотел использовать его инверсию:

'a,'b

Я должен был бы использовать два диапазона:

1,'a-1

и

'b+1,$

Я подозреваю, что это не может быть сделано за один шаг - но это было бы хорошо!

12
задан 22.09.2014, 17:29

3 ответа

Сначала создайте следующее отображение (например, связанный с <F4> ключ)

map <F4> :<C-U>1,'<-1:delete<CR>:'>+1,$:delete<CR>

затем, после выбора диапазона в визуальном режиме, просто нажмите <F4> инициировать связанную команду. Команда может быть легко объяснена в частях:

  • ":"Перейдите к режиму командной строки.
  • "<C-U>"Удалите все символы между позицией курсора и начало строки.
  • "1,'<-1"Specifiy диапазон от первой строки файла к строке перед запуском текущего выбора.
  • ":delete<CR>"Удалите (ранее указанный диапазон строк).
  • ":'>+1,$:delete<CR>"Удалите строки в диапазоне"'>+1,$", т.е. от строки после конца выбора в конец файла.
7
ответ дан 07.12.2019, 11:47
  1. выберите свой текст
  2. "*yggdG"*p что означает...

    "*y    " yank it to the selection register
    ggdG   " delete everything
    "*p    " and paste the selection again 
    
15
ответ дан 07.12.2019, 11:47

так как 'инвертирование' означает в основном создавать 'мультивыборы' (область прежде и после исходного выбора), я искал 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."
1
ответ дан 07.12.2019, 11:47

Теги

Похожие вопросы