2011-10-18 2 views
12

vi' 또는 vi"을 입력하여 따옴표/따옴표 안에 텍스트를 선택할 수 있다는 것을 알고 있습니다. 예를 들어, H에서 커서, 나는 vi"Vim의 괄호 안의 괄호 안의 텍스트 선택

Hello "World" 

을 실행하여 World를 선택할 수 있습니다하지만 내 커서가 H에 있으면 내가

Hello (World) 

이 있다면 작동하지 않는 것 내가 선택하려고 Worldvi)을 사용하면 작동하지 않습니다. 이를 수행하는 유일한 방법은 실제로 커서를 괄호 안에 넣고 vi)을 실행하는 것입니다. 왜 이런 식으로 다른 "내부 텍스트를 선택)하고 있는가?

+0

이 질문에 이전에 답변했지만 확신 할 수 없습니다. –

답변

25

{a, i} × {(, ), b} 텍스트 개체 명령과 다양한에서 자신의 ", ', ` 대응 주로 결과의 차이를 의 정의 블록인용 문자열 (:help v_ab:help v_aquote 참조).

을, 후자는 이전 인용 characte에서 텍스트 동안 r을 현재 동일한 줄에있는 다음 줄까지 (줄) 이스케이프 처리합니다. 이전은 입니다. 이전 일치하지 않는 첫 번째 괄호 사이의 텍스트와 닫는 것과 일치하는 사이의 텍스트입니다. 간단히 말해서, 명령이 va( (카운트없이)는 [(v%과 같습니다. 커서 앞에 일치하지 않는 괄호가 없으면 둘 다 을 선택하십시오. 그러나 va" 명령은 일치하는 따옴표 쌍을 찾기 위해 현재 행을 검사합니다.

행동의 차이에 대한 주된 이유는, 나는 가정, 인용 문자열, 괄호는 달리, 비 중첩로 (적어도에 관점을 내장 빔 텍스트 객체) 가정이다.

는 하나

%vi(

또는

%va(

이 선택에 괄호를 포함하는 데 사용할 수있는 현재 행의 다음 괄호 안의 텍스트를 선택합니다.

+0

+1, 이건 아름답습니다. 고마워요. – romainl

+0

불행히도이 솔루션은 괄호에만 사용할 수 있으며 다른 유형의 브래킷에는 사용할 수 없습니다. –

+3

@Daniel : 사각형, 중괄호, 각괄호 등의 경우 '% vi [','% vi {','% vi <'등을 사용하십시오. –

1

This comment on Hacker News은 문제를 해결 한 스크립트를 가리 킵니다.

테스트되지 않았지만 스티브 로쉬 (Steve Losh)의 것이므로 좋을 것입니다.

관련 문제