잘못된 단어 완성


13

<C-p>그리고 <C-n>현재 문서 내에서 발견 단어의 완료를 할 수 있습니다.

몇 가지 메모를 {0,1}^n하고 (E,D)여러 번 말하고 글을 쓰고 있습니다. 이들은 여러 단어로 구성된 단어입니다.

<C-p><C-n>(또는 기타 관련 ins-completion명령)으로 WORD를 완성하는 방법이 있습니까?


1
:abbreviate대신 사용하는 것이 좋습니다. 예를 들어, :ab 01n {0,1}^n명령을 발행하십시오 . 그런 다음 01n삽입 모드에서 독립 단어로 입력 할 때마다 로 확장됩니다 {0,1}^n.
200_success

@ 200_ 성공, 감사합니다. 나는 약어에 대해 생각했지만 그래도 가능한지 알고 싶었다 ins-completion.
Gonçalo Ribeiro

답변:


5

삽입 모드 완료 Ctrl-n

옴니 펑크와 같은 자신의 기능을 작성하는 것 이외의 단어 완성을 할 수 있는지 모르겠습니다. 그러나 문자와 일치하는 단어를 확장하는 것이 마음에 들지 않으면 해당 문자를 'iskeyword'에 추가 할 수 있습니다

예를 들어, 'iskeyword'는 기본적으로

iskeyword=@,48-57,_,192-255

그런 다음 위의 추가 문자와 함께 설정했습니다.

:set iskeyword=@,48-57,_,192-255,{,},,,(,),^

이 추가 {, }, ,, (, ), 그리고 ^단어를 구성하는 문자 (이미 한 일에 추가)

그런 다음 입력이 {Ctrl-n완료됩니다 {0,1}^n( 주어진 두 예제 만 포함 된 파일에서)

참고 : :set iskeyword+=다음과 같이 추가 작업만으로 수행하는 것이 좋습니다 .

:set iskeyword+={,},,,(,),^

이런 식으로 기존 설정에 새 문자를 추가하여 키워드를 구성하는 다른 요소는 그대로 둡니다.

약어로 확장

원래의 질문의 일부는 아니지만, 다른 유사한 기능은 nvi 또는 Vim의 약어 기능을 사용하는 것입니다. 키워드 완성과 달리 약어는 최종 텍스트처럼 보이지 않아도됩니다. 또한 키워드 완성과 달리 약어는 요청하는 경우에만 자동으로 확장됩니다. 목표와 사용법에 따라 많은 입력을 절약 할 수 있으며 완료를 요구하지 않고도 많은 텍스트를 입력 할 수 있습니다.

약어는 작은 키워드 집합에 적합하며 미리 정의 할 수있는 경우 (단어 완성과 같은 텍스트에서는 검색되지 않습니다).

약어의 기본 개념은 WORD를 다른 텍스트와 연결하고 편집기에서 해당 WORD를 입력 한 것을 감지 할 때마다 (즉, 입력 한 텍스트는 공백으로 둘러싸이며, 완료 조치는 공백을 추가합니다) 키워드 또는 삽입 모드를 종료하면 다른 텍스트로 대체됩니다.

파일 {0,1}^n에 많은 것이 포함되어 있고 다른 변형이 없다고 가정 해 봅시다 . 그것을 약간의 손가락 스트레칭으로 입력하면, 그냥 입력 01n하거나 myvalue확장하고 싶을 수도 {0,1}^n있지만 , 단어 자체 01n또는 myvalue단어 자체 에서만 (즉, 다른 단어 내에 나타나는 경우에만) 변경).

nvi에서 할 수 있습니다 :abbrev 01n {0,1}^n. Vim에서도 동일한 작업을 수행 할 수 있지만 :iabbrev 01n {0,1}^n확장을 삽입 모드로만 제한하는 것이 좋습니다 .

그런 다음 텍스트가있는 경우 (여기서 |커서를 나타냄)

We find that the value 01n|

그리고 당신은 공격 Esc하거나 Space또는 Tab하거나 커서를 이동, 텍스트가 대체됩니다, 당신은 (공간을 사용하여 예를 들어)가

We find that the value {0,1}^n |

중단없이 계속 입력 할 수 있습니다.

일반적으로 일반적인 오타를 자동으로 수정하는 데 사용되지만 (예 : 'teh'를 'the'로 변경) 미리 매핑을 설정하는 것을 신경 쓰지 않는다는 가정하에 사용 사례에도 똑같이 유용 할 수 있습니다.


나에게 그것은 :set iskeyword+={,},,,(,),^예상대로 작동 하는 것 같습니다 .
Karl Yngve Lervåg

1
실제로 그렇습니다. 지난번에 시도했을 때 Vim은 구문 오류라고 계속 말했습니다. 어딘가에 있었을 것입니다. 내 답변을 업데이트합니다.
John O'M.

@ JohnO'M. abbreviate이 작업에 더 적합한 방법에 대한 참조를 추가 할 수 있습니까?
Gonçalo Ribeiro

@ GonçaloRibeiro 완료. 도움이 되길 바랍니다.
John O'M.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.