vim으로 편집하다 보면 따옴표 안에 있는 내용을 삭제해야 하는 경우가 종종 있는데, 인터넷에서 발견한 내용입니다. 비슷한 것도 있어요
di(, ci' 등 여기의 i를 어떻게 이해하나요?
阿神2017-05-16 16:45:05
i는 내부를 의미합니다. vim의 :help object-select
:help object-select
比如说有这么个字符串"testdfat"
假设光标停留在第一个t位置
di"
:delete all content inside ",结果字符串为""
dta
:delete all content to a
,结果字符串为"at"
dfa
:delete all content from current location, until a
is found,结果字符串为"t"
예를 들어 "testdfat"
라는 문자열이 있습니다.
di"
: 내부 "에 있는 모든 콘텐츠를 삭제합니다. 결과 문자열은 ""
입니다.
dta
: to a
에 대한 모든 콘텐츠를 삭제하면 결과 문자열은 "at"
입니다.
🎜
<리>
dfa
: a
가 발견될 때까지 현재 위치에서 모든 콘텐츠를 삭제합니다. 결과 문자열은 "t"
입니다.
🎜
🎜巴扎黑2017-05-16 16:45:05
d는 삭제를 의미하고, i는 거의 포함을 의미합니다. 결합하면 두 따옴표 사이의 문자를 삭제한다는 의미입니다.
해당하는 것은 di' di( di< di{ .....
d는 c로 대체될 수도 있습니다.
비슷한 daw das dap도 있습니다: 단어/문장/문단을 삭제하세요.
为情所困2017-05-16 16:45:05
이 명령을 이해하려면 VIM의 몇 가지 기본 개념을 이해해야 합니다.
1. 연산자: VIM은 텍스트를 수정하거나 편집하기 위한 많은 명령(연산자)을 제공합니다. 이러한 연산자 자체는 d는 삭제, c는 변경과 같은 동작일 뿐입니다. 그러나 이러한 연산자는 작업 중인 개체를 알아야 합니다. on이므로 텍스트 개체를 제공하는 메서드가 필요합니다. 이러한 연산자를 처리할 텍스트 개체를 받는 함수로 생각할 수 있습니다. 도움말 문서는 help: Operator
를 참조하세요.
2. text-objects: 이름대로 텍스트 객체입니다. 연산자에 전달되는 매개변수입니다. VIM은 특수 명령 a 및 i을 포함하여 일부 텍스트를 텍스트 개체로 선택하는 몇 가지 방법을 제공합니다(a와 i가 삽입 모드로 들어가지 않습니까? 이에 대해서는 나중에 설명하겠습니다). 여기서 i는 "내부"를 의미합니다. , 예를 들어 'hello, w^orld'(^는 커서 위치를 나타냄)와 같이 i'는 hello, world를 선택하고 작은따옴표 안의 a'는 선택되고, a'는 작은따옴표를 포함한 전체 내용을 선택합니다. 자세한 지침은 help: text-objects 문서를 참조하세요.
3. Motion(모션): VIM, h, j, k, l 등을 학습할 때 가장 먼저 접하게 되는 움직임을 나타냅니다. 실제로 각 이동 명령은 텍스트 영역을 덮고 이 텍스트 영역은 텍스트 개체로 사용될 수도 있습니다. 예를 들어 5w가 5개 단어를 이동하면 이 5개 단어가 실제로 텍스트 개체로 연산자에 전달될 수 있습니다. 예를 들어 d5w는 5개의 단어를 삭제합니다. 자세한 지침은 help: Motion 문서를 참조하세요.
4. 운영자 보류 모드: VIM에는 여러 가지 모드가 있다는 것을 모두 알고 있습니다. 가장 먼저 이해해야 할 모드는 일반 모드, 삽입 모드 및 명령 모드입니다. 이름에서 이 모드는 보류 상태의 연산자가 있음을 의미합니다. 이 상태가 나타나는 이유는 1에서 언급한 연산자를 사용하기 때문입니다. 이 연산자에는 텍스트 개체가 매개 변수로 필요하며 기다리고 있습니다. 그런 객체는 2번이나 3번의 명령어를 통해 구현될 수 있습니다. 이것이 바로 a와 i가 이때 삽입 모드로 들어가지 않는 이유입니다. 왜냐하면 VIM은 현재 일반 모드가 아니고 다른 모드에 있기 때문입니다. VIM이 현재 명령을 표시하도록 set showcmd를 설정할 수 있습니다. 운영자 보류 모드인 경우 VIM 상태 표시줄에 이 명령이 표시됩니다. 운영자가 요구하는 매개변수를 전달한 후 VIM은 명령을 실행한 후 일반 모드로 돌아갑니다.
이 시점에서는 di'를 이해하기 쉽습니다.
- d: VIM이 삭제 명령을 수락하고 운영자 보류 모드로 들어갑니다
- i': 현재 커서 위치를 좌표로 사용하여 작은따옴표 안의 텍스트를 선택하고 삭제할 개체로 d에 전달합니다