이 코드 줄이 있다고 가정하십시오.
$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
그것은 (선호도 순으로) 현재 서라운드 뒤에 커서, 또는 앞에 커서됩니다 ( ‘) 따옴표 (‘) 단일 따옴표 ( “), 또는 뒷면의 내용을 조작 할 수 있습니다 즉, 따옴표에 도달해야 할 때 앞뒤로 점프합니다.
예제를 보면 이해하기가 더 쉽습니다 (커서는로 표시됨 |
).
- 이전 :
foo '1, |2, 3' bar
; 누른 후diq
:foo '|' bar
- 이전 :
foo| '1, 2, 3' bar
; 누른 후diq
:foo '|' bar
- 이전 :
foo '1, 2, 3' |bar
; 누른 후diq
:foo '|' bar
- 이전 :
foo '1, |2, 3' bar
; 누른 후daq
:foo | bar
- 이전 :
foo| '1, 2, 3' bar
; 누른 후daq
:foo | bar
- 이전 :
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 명령의 끝 위치, 즉 변경할 범위를 제공합니다.