vim에서 선택을 반전시키는 방법은 무엇입니까?


12

V명령을 사용하여 줄 범위를 선택한 후 선택 되지 않은 파일의 모든 줄을 삭제하고 싶습니다. 선택을 반전시키는 방법입니다-선택하지 않은 모든 줄을 선택 하시겠습니까?

어떻게

:g!/FOO/d

FOO를 포함 하지 않는 모든 행을 삭제합니다 .

범위를 염두에두고 그 역을 사용하고 싶을 경우 :

'a,'b

두 가지 범위를 사용해야합니다.

1,'a-1

'b+1,$

한 번에이 작업을 수행 할 수없는 것 같습니다.하지만 좋을 것입니다!


"자르기"스타일 작업을 원하십니까?
quack quixote

답변:


7

먼저 다음 매핑을 만듭니다 (예 : <F4>키에 바인딩 ).

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

그런 다음 시각 모드에서 범위를 선택한 <F4>후을 누르면 관련 명령이 트리거됩니다. 이 명령은 다음과 같이 쉽게 설명 할 수 있습니다.

  • " :"명령 행 모드로 들어갑니다.
  • " <C-U>"커서 위치와 줄 시작 사이의 모든 문자를 제거하십시오.
  • " 1,'<-1"파일의 첫 번째 줄부터 현재 선택이 시작되기 전의 줄까지의 범위를 지정하십시오.
  • " :delete<CR>"삭제 (이전에 지정된 라인 범위).
  • " :'>+1,$:delete<CR>"범위 " '>+1,$" 의 행을 삭제하십시오 . 즉, 선택이 끝난 후 행부터 파일의 끝까지.

2
간단히 설명하면 : 1, '<-1은 라인 1부터 선택 시작까지의 범위입니다. '> + 1, $는 선택 후 1 줄부터 끝까지의 범위입니다 ...
akira

하나의 "삭제"명령으로이를 수행 할 수있는 방법이 있습니까?
Kevin Panko

1
@Kevin Panko : 범위를 단일 표현식으로 결합해야합니다. 나는 문서를 보았고 범위 구문이 그런 것을 지원한다고 생각하지 않습니다. vimdoc.sourceforge.net/htmldoc/cmdline.html#cmdline-ranges ,, vim.wikia.com/wiki/Ranges
quack quixote

15
  1. 당신의 텍스트를 선택
  2. "*yggdG"*p 그 의미는 ...

    "*y    " yank it to the selection register
    ggdG   " delete everything
    "*p    " and paste the selection again 
    

9
ygg "_dGP는 동일하지만 짧습니다.
Kevin Panko

1
결국 당신은 같은 텍스트를 얻을 진실 :)
akira

나는 akira와 Kevin Panko의 답변을 언급하고 싶습니다 (댓글을 추가 할 수는 없습니다). "(v) 수동 모드 vmap od ygg에 [o] 위치 [d] 위치"_dGP
Marcin Rogacki

github.com/maxbrunsfeld/vim-yankstack 과 같은 플러그인을 사용하면이 접근 방식이 더 쉬워집니다. 삭제로 인해 yank 레지스터가 손상되는 것에 대해 걱정할 필요가 없습니다.
Jack O'Connor

어떻게 이것을 키보드 매핑으로 추가 할 수 .vimrc있습니까? 몇 번 시도했지만 아직 얻지 못했습니다. 내 시도했다 map <F4> n"*yggdG"*p nmap <F4> "*yggdG"*p
브래드 공원

7

후손을 위해서만 :

:v/\%V/d

그것은 선택의 일부가 아닌 라인에서 역 글로벌을 수행합니다. : v는 라인 기반 구문이므로 라인, 스트림 또는 블록 선택과 같은 선택을 포함하는 모든 라인은 삭제 삭제가 필요합니다.


1

'반전'은 기본적으로 '다중 선택'(원래 선택 전후의 영역)을 만드는 것을 의미하기 때문에 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."
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.