vi에서 따옴표 사이의 텍스트를 바꾸는 방법


106

이 코드 줄이 있다고 가정하십시오.

$query = "SELECT * FROM table";

vi / vim에 따옴표 사이의 모든 것을 즉시 삭제하고 그 사이에 커서를 놓아 입력을 시작할 수있는 명령이 있습니까?

답변:


182

를 사용하십시오 ci". 즉, 큰 따옴표 안의 내용을 변경 하십시오 .

다음과 같은 방법으로 다른 텍스트 개체를 조작 할 수도 있습니다.

  • ci' -작은 따옴표 안에서 변경
  • ciw -단어 내에서 변경
  • ci( -괄호 안의 변경
  • dit -HTML 태그 내부 삭제 등

다른 vim 텍스트 개체에 대한 자세한 내용은 여기 .


2
와 함께 작동하는 것 vim같지만 vi. (확실하지 않음)
Ivan Chau 2014 년

나를 위해 이것은 문서의 어느 곳에서나 현재 줄에서만 작동합니다.
그리고 마지막으로

그러면 어떤 명령을 거꾸로할까요? 커서 뒤에있는 따옴표 안의 텍스트를 바꾸려는 경우입니다.
dtburgess

1
@dtburgess : 한 가지 방법은 F"ci".
Eugene Yarmash

CI '와 CI는 "벌금을 작동하지만 CI는 (저 사람을 위해 일을하지 않는 어떤 아이디어 왜.?
VRAM Vardanian

24

따옴표 중에서 선택하고 삭제 ( d), 변경 ( c) 등을 사용할 수 있습니다.

vi"

마찬가지로 중괄호, 대괄호, XML 요소 등을 대체 할 수 있습니다.

vi(
vi{
vit

단순히 변경 / 삭제 또는 해당 할 di", ci"등 대입을 a위해 i(당신이 표시하거나 괄호 변경할 수 있도록 주변의 요소를 포괄하는 뜻 하고 , 예를 들어, 내용)


5

플러그인을 만들었습니다 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 페이지를 참조하십시오.


3

이미 따옴표 안에 당신이 할 수 있습니다

di"

내부 삭제 "


6
커서는 명령 기본값으로 라인의 최초의 캐릭터의 변화에, 이중 인용 된 문자열 내에서 할 필요는 없습니다
유진 Yarmash을

1
알아 주셔서 감사합니다! 좀 더주의 깊게 읽어야한다는 걸 보여 주려고 해요. :)
샘 Peacey

3

Brian의 답변 외에도 새 값을 p(붙여 넣기) (붙여 넣기) 및 y(끌어 넣기) 할 수 있으므로 따옴표 안의 값을 다른 값으로 바꾸 yi"려면 복사하려는 vi"선택 항목에서 영역을 선택할 수 있습니다. 바꾸고 싶고 p값을 제대로 바꾸는 것입니다.


0

선택한 답변은 ViM에만 적합하지만 vi에는 적합하지 않습니다. 저자가 커서의 초기 위치를 언급하지 않았기 때문에 질문도 정확하지 않습니다. 커서가 큰 따옴표 안에 있다고 가정하면 vi에 대한 대답은 다음과 같습니다.

T"ct"

어디:

T "-"문자 바로 뒤 뒤로 이동

c-변경 명령

t "-문자 지우기를 중지해야하는 c 명령의 끝 위치, 즉 변경할 범위를 제공합니다.

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