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

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

$query = "SELECT * FROM table";

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



답변

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

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

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

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


답변

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

vi"

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

vi(
vi{
vit

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


답변

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


답변

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

di"

내부 삭제 “


답변

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


답변

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

T"ct"

어디:

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

c-변경 명령

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


답변