Vim에서 대괄호 (또는 따옴표 또는 ...)를 선택하는 방법은 무엇입니까?


219

나는이 종류의 물건을위한 플러그인이 있었을 것이라고 확신하지만, 이제는 그것을 필요로하므로 (자연적으로) 그것을 찾을 수없는 것 같아서 간단하고 간단하게 물어볼 것입니다.

대괄호, 따옴표 또는 일반적으로 일치하는 문자 목록 중에서 선택하는 가장 쉬운 방법은 무엇입니까?

   write ( *, '(a)' ) 'Computed solution coefficients:'

예를 들어, 여기에 내가 선택하고 싶은 (a), 또는 Computed solution coefficients:.

여러 줄에 관심이 없으며 한 줄에서 발생하는 경우에만 관심이 있습니다.

답변:


276

괄호 안에 넣고 싶은 탐색 키를 사용하고 나면 일치하는 Parens 내의 모든 것을 복사 yi(하거나 yi)복사 할 수 있습니다 . 대괄호 (예 yi]:) 및 중괄호 와도 작동합니다 . 또한합니다 y, 당신은 또한 삭제 또는 변경 텍스트 (예를 들어 ci), di]).

나는 큰 따옴표와 작은 따옴표로 이것을 시도했고 거기에서도 효과가있는 것으로 보입니다. 귀하의 데이터를 위해 다음을 수행합니다.

write (*, '(a)') 'Computed solution coefficients:'

커서를로 이동 C한 다음을 입력하십시오 yi'. 빈 줄, 히트로 커서를 이동 p하고, GET

Computed solution coefficients:

으로 CMS가 언급 뿐만 아니라 시각적 모드 선택이 작품 - 단지 사용 vi), vi}, vi', 등


1
나는 일반적으로 미리 정의 된 일치하는 문자 (일반적으로 작은 따옴표와 큰 따옴표 및 모든 종류의 괄호) 사이의 모든 것을 선택할 수있는 방법을 찾고 있습니다.
Rook

2
분리 된 단어는 무엇을 의미합니까? "[x, y, z]"에서 시도한 결과 "x, y, z"를 선택했습니다
Tim Whitcomb 2016 년

4
마지막 의견을 무시하십시오-문제가 무엇인지 발견했습니다. 매력처럼 작동합니다 :-)
Rook

그것은 따옴표와 함께 작동하고 yi"모든 따옴표를 선택 하는 것 같습니다
stefanB

ci(또는 ci)내가 찾던 것을 위해 그것을합니까. 감사. 나는 여전히 i그 경우를 완전히 이해하지 못하지만, 그것이 효과가있는 한 누가 신경 쓰는가? :)
justnorris 10

279

작은 따옴표를 선택하기 위해 보통 vi' ""내부 작은 따옴표를 선택하십시오 ".

괄호 블록 안에 사용합니다 vib ( "내부 블록 선택")

중괄호 블록 안에서 사용할 수 있습니다 viB( "자본 B")

"포함"을 선택하려면 (따옴표, 괄호 또는 중괄호도 선택) a대신을 사용할 수 있습니다 i.

매뉴얼 또는 vim 내 에서 텍스트 개체 선택 에 대한 자세한 내용을 읽을 수 있습니다 :help text-objects.


그 팁에 감사드립니다. 나는 비슷한 것을 찾고 요청했으며 결과에 만족하지 못했습니다. 대박.
alfredodeza

이 팁은 내 뇌와 근육 기억 속에서 매우 간단하고 쉽게 커밋 할 수 있습니다. 감사.
Ghazaly

이것은 매우 유용한 팁입니다. 추가 키 입력으로 더 이상 혼란스럽지 않습니다. 링크 주셔서 감사합니다.
Rai

27

이 선택 방법은 내장되어 있으며 Vim 도움말에 잘 설명되어 있습니다. XML 태그 등을 다룹니다.

참조하십시오 :help text-objects.


1
: 텍스트 객체가 유용한 것들에 더 가까워 지도록 도와주십시오 ... 적어도 ""와 a (비주얼 모드 일 때)와 같은 일반적인 것들을 언급 할 수 있습니다.
Stobor

2
(또한 오랜 vim 사용자 임에도 불구하고 +1이므로 이에 대해 몰랐습니다!)
Stobor 2016 년

@ 스토 보. 건배는 그 참조를 수정
마이클

21

작은 따옴표 내에서 선택하려면을 사용하십시오 vi'.

괄호 안에서 선택하려면를 사용하십시오 vi(.


3
참고 : ci'또는 ci(시각적으로 선택하는 대신 변경하십시오. 그러나 그것은 내가 원하는 것을 정확하게합니다. 감사합니다 :)
justnorris 10

두 번째는 () 블록 내에서만 작동하므로 일반적으로 %vi(또는%vib
816-8055

7

화살표를 사용하거나 hjkl대괄호 표현식 중 하나를 찾은 다음 v시각적 (예 : 선택) 모드를 선택한 다음 %다른 대괄호로 이동하십시오.


5
(안타깝게도 따옴표는하지 않습니다 ...)
Stobor

3

searchpair내장 함수를 사용하여 .vimrc에 Vim 함수를 작성하십시오 .

searchpair({start}, {middle}, {end} [, {flags} [, {skip}
            [, {stopline} [, {timeout}]]]])
    Search for the match of a nested start-end pair.  This can be
    used to find the "endif" that matches an "if", while other
    if/endif pairs in between are ignored.
    [...]

( http://vimdoc.sourceforge.net/htmldoc/eval.html )


2

가장 투표가 많은 답변에 세부 사항을 추가합니다.

gvim을 사용하고 있고 클립 보드에 복사하려면

"+<command>

대괄호 (또는 괄호 또는 중괄호) 사이의 모든 내용을 복사하려면

예를 들어 : "+yi}커서가있는 중괄호 사이의 모든 내용을 클립 보드에 복사합니다.


2
이것은 문제와 완전히 직교하므로 답이되어서는 안됩니다. 에 대해 묻는 모든 질문에 이것을 쓸 수 있습니다 y.
파이프

이것은 답변 자체가 아니라 답변에 추가됩니다.
yuriploc

그런 다음 해당 답변을 수정해야합니다.이 게시물은 그대로 질문에 대답하지 않습니다.
파이프

이것은 gvim을 사용하지 않는 것에 대한 광고입니다 :) 누가 그들의 인생에서 여분의 shift + keypresses가 필요합니까?
Paul Parker

1

플러그인을 만들었습니다 vim-textobj-quotes: https://github.com/beloglazov/vim-textobj-quotes

모든 유형의 가장 가까운 따옴표 쌍에 대한 텍스트 객체를 제공합니다. 사용에만 iq또는aq 그것은 (선호도 순으로) 현재 서라운드 뒤에 커서, 또는 앞에 커서됩니다 ( ') 따옴표 (') 단일 따옴표 ( "), 또는 뒷면의 내용을 조작 할 수 있습니다 즉, 따옴표에 도달해야 할 때 앞으로 또는 뒤로 점프합니다.

예제를 보면 이해하기가 더 쉽습니다 (커서가로 표시됨 |).

  1. 전 : foo '1, |2, 3' bar; 누른 후 diq:foo '|' bar
  2. 전 : foo| '1, 2, 3' bar; 누른 후 diq:foo '|' bar
  3. 전 : foo '1, 2, 3' |bar; 누른 후 diq:foo '|' bar
  4. 전 : foo '1, |2, 3' bar; 누른 후 daq:foo | bar
  5. 전 : foo| '1, 2, 3' bar; 누른 후 daq:foo | bar
  6. 전 : foo '1, 2, 3' |bar; 누른 후 daq:foo | bar

위의 예제는 작은 따옴표에 대해 제공되며, 플러그인은 큰 따옴표 ( ")와 뒤로 (`) 따옴표에 대해 동일한 방식으로 작동합니다.

: 당신은 또한 다른 사업자 사용할 수 있습니다 ciq, diq, yiq, viq, 등

자세한 내용은 위의 github 페이지를 참조하십시오.


-6

vim의 간단한 키맵으로이 문제를 해결할 수 있습니다. map viq F”lvf”hh 위의 명령은 viq를 키에 매핑하여 따옴표 사이를 검색합니다. "를 임의의 문자로 바꾸고 키맵을 만드십시오. 시작하는 동안 이것을 vimrc에 붙이면 매번 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.