search 자바스크립트 - Vim에서 대소 문자를 구별하지 않는 방법




체크 대문자 (12)

대문자 단어 (예 : COPYRIGHT)를 파일에서 검색하고 싶습니다. 나는 다음과 같은 검색을 시도했다.

/copyright/i    # Doesn't work

하지만 작동하지 않습니다. 나는 Perl에서 i 플래그를 정규 표현식에 넣으면 정규 표현식을 대소 문자를 구별하지 않는 정규 표현식으로 바꾼다는 것을 알고있다. Vim은 대소 문자를 구별하지 않는 정규 표현식을 나타내는 자체 방식을 가지고있는 것으로 보입니다.


Answers

좋은 오래된 vim[grep] 명령 ..

:vimgrep /example\c/ &
  • 대소 문자를 구별하지 않으려면 \ c
  • 대소 문자를 구분하려면 \ C
  • % 는 현재 버퍼에서 검색하는 것입니다.


명령을 실행할 수 있습니다.

:set ignorecase

그 후에는 검색에서 대소 문자를 구별하지 않습니다.


대 / 소문자를 구분하는 검색과 구분하지 않는 검색간에 전환하려면 내 .vimrc에서이 매핑을 사용합니다.

nmap <F9> :set ignorecase! ignorecase?


\c 이스케이프 시퀀스를 사용해야합니다. 그래서:

/\ccopyright

역함수 (대소 문자를 구분 하는)를하려면 \C 대신 사용하십시오.


다른 사람들이 제안했듯이 :

:set ic

하지만 멋진 기능은 다음과 같은 모드로 전환 할 수 있습니다.

:set ic!

나는 검색 문자열의 끝에 \c 를 사용하는 것을 선호한다 :

/copyright\c

@huyz 언급은 때로는 원하는 동작이 대소 문자를 구분하지 않고 대 / 소문자를 구별하는 대용을 사용한다는 것을 언급합니다. 내 솔루션 :

nnoremap / /\c
nnoremap ? ?\c

그걸로 항상 / 아니면 때렸 ? 대소 문자를 구별하지 않으려면 \c 를 추가합니다.


기본적으로 ignorecase 를 설정할 수 있습니다. 이것을 쉘에서 실행하십시오.

echo "set ic" >> ~/.vimrc

\cignorecase 대한 제안뿐만 아니라 smartcase 매우 유용하다는 것을 smartcase 습니다. 대문자가 포함 된 것을 검색하면 대 / 소문자를 구분하여 검색합니다. 순전히 소문자 만 검색하면 대소 문자를 구분하지 않고 검색을 수행합니다. \c\C 를 사용하여이를 무시할 수 있습니다.

:set ignorecase
:set smartcase
/copyright      " Case insensitive
/Copyright      " Case sensitive
/copyright\C    " Case sensitive
/Copyright\c    " Case insensitive

만나다:

:help /\c
:help /\C
:help 'smartcase'

vimrc 에서 다음 명령을 사용할 수 있습니다 :

  • set ignorecase - 모든 검색은 대소 문자를 구별하지 않습니다.
  • set smartcase - 대문자가 포함 된 검색은 대소 문자를 구분합니다.

smartcase 제공하는 것을 사용하려면 ignorecase 를 설정해야합니다.

필자는 최근 에 Vim 검색 명령대한 기사를 작성 했습니다 (명령 및 최상의 플러그인을 사용하여 효율적으로 검색 할 수 있음).


Vim에는 2 가지 모드가 있습니다.

1. 편집 모드

  1. 정상 모드 (Esc)

검색은 일반 모드에서 작동합니다.

대 / 소문자 구분을 위해 / \ c

/ \ c 검색


이것은 내가 생각하는 방식에 대한 최선의 대답이지만 테이블에서 더 좋았을 것입니다 : https://.com/a/12389839/962394 .

그래서, rewording :

정규 표현식에서 줄 바꿈 (ascii 0x0a , unix 개행 문자)을 사용하려면 \r 을 사용해야하지만 대체로는 특이합니다. 줄 바꿈에 \n , 캐리지 리턴에 \n 을 계속 사용해야합니다. .

이것은 vim이 \n 을 NIL 문자 (ascii 0x00 )를 의미하는 대체 문자로 사용했기 때문입니다. 당신은 NIL이 \0 이었을 것이라고 예상했을 것입니다. 줄 바꿈에 보통 사용하는 \n 을 해방시켜 주겠지 만, \0 이미 정규 표현식에서 의미를 가지므로 \n 로 바뀌 었습니다. 그러므로 개행 문자를 \n 에서 \r (정규 표현식에서 캐리지 리턴 문자, ascii 0x0d )으로 변경하십시오.

character                | ascii code | C representation | regex match | regex replacement
-------------------------+------------+------------------+-------------+------------------------
nil                      | 0x00       | \0               | \0          | \n
line feed (unix newline) | 0x0a       | \n               | \n          | \r
carriage return          | 0x0d       | \r               | \r          | <unknown>

NB : ^M (Linux의 경우 Ctrl-V Ctrl-M)은 다른 사람들이 (내가 방금 시도한) 충고보다는 캐리지 리턴 대신 정규식 대체에 사용될 때 개행을 삽입합니다.

또한 vim은 파일 형식 설정에 따라 파일로 저장 될 때 줄 바꿈 문자를 변환하므로 사안을 혼동시킬 수 있습니다.





search vim case-insensitive