Vim이 ASCII가 아닌 문자를 강조 표시하는 방법?
Vim이 ASCII가 아닌 문자를 강조 표시하도록하려고합니다. 사용 가능한 설정, 정규식 검색 패턴 또는 플러그인이 있습니까?
[]
검색에서 문자 클래스의 범위를 사용 하면 ASCII 16 진 문자 범위 를 제외 할 수 있어야 하므로 ASCII 범위 밖에 있는 hlsearch
다른 모든 문자를 강조 표시 ( 활성화 한 것으로 가정 )해야 합니다.
/[^\x00-\x7F]
이것은 ASCII 와 ASCII (0-127) 사이의 문자에 대해 (-를 통해 ) 음의 일치 를 수행하며 간단한 테스트에서 작동하는 것으로 보입니다. 물론 확장 ASCII의 경우을 사용 하는 대신 범위를 확장하십시오 .[^]
0x00
0x7F
\xFF
\x7F
/[^\x00-\xFF]
다음을 통해 십진수로 표현할 수도 있습니다 \d
.
/[^\d0-\d127]
인쇄 할 수없는 문자 제외와 같이보다 구체적인 내용이 필요한 경우 해당 범위를 문자 클래스에 추가해야합니다 []
.
예, 일치하는 문자열을 강조 표시하는 기본 기능이 있습니다. Vim 내부에서 다음을 수행하십시오.
:help highlight
:help syn-match
syn-match
그룹에 해당하는 문자열을 정의합니다. highlight
그룹이 사용하는 색상을 정의합니다. vimrc 파일의 구문 강조를 생각하십시오.
따라서 .vimrc 파일에서 아래 명령을 사용할 수 있습니다.
syntax match nonascii "[^\x00-\x7F]"
highlight nonascii guibg=Red ctermbg=2
검색 엔진을 통해 여기에 끝나고 비 ASCII 문자를 강조 표시 할 수없는 다른 (지금부터 불행하지 않은) 사람들을 위해 이것을 시도하십시오 (이것을 .vimrc에 넣으십시오).
highlight nonascii guibg=Red ctermbg=1 term=standout
au BufReadPost * syntax match nonascii "[^\u0000-\u007F]"
이는 일반적인 (파일 형식 [파일 확장자] 기반) 구문 정의와 충돌하지 않는 이점이 있습니다.
인쇄 할 수 없는 문자 에 관심이있는 경우 다음을 사용하십시오./[^\x00-\xff]/
함수에서 사용합니다.
function! NonPrintable()
setlocal enc=utf8
if search('[^\x00-\xff]') != 0
call matchadd('Error', '[^\x00-\xff]')
echo 'Non printable characters in text'
else
setlocal enc=latin1
echo 'All characters are printable'
endif
endfunction
이 정규식도 작동합니다. 그것은 briceolion.com 에서 "비 ASCII 문자를 제거하는 Vim 제거"에 대한 첫 번째 Google 히트 였으며 다음 과 같이 :set hlsearch
강조 표시됩니다.
:/[^[:alnum:][:punct:][:space:]]/g
이 주제에 대한 다른 답변과 내가 여기에 얻은 답변을 기반으로 이것을 내에 추가 .vimrc
했으므로을 입력하여 비 ASCII 강조 표시를 제어 할 수 있습니다 <C-w>1
. 사용할 각 파일 구문에 대해 주석 그룹을 추가해야하지만 내부 주석도 표시됩니다. 즉, zsh 파일을 편집 zshComment
하려면 줄 에 추가 해야합니다.
au BufReadPost * syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment,pythonComment
그렇지 않으면 ASCII가 아닌 문자가 표시되지 않습니다 (모든 그룹에 ASCII가 아닌 문자를 표시하려면 containsin = ALL을 설정할 수도 있음). 다른 파일 형식에서 주석이 어떻게 호출되는지 확인하려면 원하는 형식의 파일을 열고 :sy
vim에 입력 한 다음 주석의 구문 항목을 검색하십시오.
function HighlightNonAsciiOff()
echom "Setting non-ascii highlight off"
syn clear nonascii
let g:is_non_ascii_on=0
augroup HighlightUnicode
autocmd!
augroup end
endfunction
function HighlightNonAsciiOn()
echom "Setting non-ascii highlight on"
augroup HighlightUnicode
autocmd!
autocmd ColorScheme *
\ syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment,pythonComment |
\ highlight nonascii cterm=underline ctermfg=red ctermbg=none term=underline
augroup end
silent doautocmd HighlightUnicode ColorScheme
let g:is_non_ascii_on=1
endfunction
function ToggleHighlightNonascii()
if g:is_non_ascii_on == 1
call HighlightNonAsciiOff()
else
call HighlightNonAsciiOn()
endif
endfunction
silent! call HighlightNonAsciiOn()
nnoremap <C-w>1 :call ToggleHighlightNonascii()<CR>
어떻게 든 위의 답변 중 어느 것도 나를 위해 일하지 않았습니다.
그래서 나는 :1,$ s/[^0-9a-zA-Z,-_\.]//g
내가 관심있는 캐릭터의 대부분을 유지합니다.
누군가 이미 질문에 대답했습니다. 그러나 여전히 문제가있는 다른 사람들을 위해 주석에 ASCII가 아닌 문자를 강조 표시하는 다른 솔루션이 있습니다 (또는 문제의 구문 그룹). 최고는 아니지만 일시적인 수정입니다.
시도해 볼 수 있습니다 :
:syntax match nonascii "[^\u0000-\u007F]" containedin=ALL contained |
\ highlight nonascii ctermfg=yellow guifg=yellow
This has mix parts from other solutions. You may remove contained
, but, from documentation, there may be potential problem of recursing itself (as I understand). To view other defined patterns, syn-contains
section would contain it.
:help syn-containedin
:help syn-contains
Replicated issue from: Set item to higher highlight priority on vim
참고URL : https://stackoverflow.com/questions/16987362/how-to-get-vim-to-highlight-non-ascii-characters
'IT story' 카테고리의 다른 글
jQuery validate로 수동으로 유효성 검사를 트리거하는 방법은 무엇입니까? (0) | 2020.06.25 |
---|---|
자식 서브 모듈 이름 바꾸기 (0) | 2020.06.25 |
Django와 함께 Pylint 사용하기 (0) | 2020.06.25 |
컨트롤러의 액션에서 XML을 ActionResult로 반환 하시겠습니까? (0) | 2020.06.25 |
MySQL에서 필드가 null이면 0을 반환 (0) | 2020.06.25 |