[vim] Vim이 모든 공백을 문자로 보이게 만들기

Vim이 모든 공백을 문자로 표시하는 방법을 찾을 수 없습니다. 내가 찾은 것은 탭, 후행 공백 등에 관한 것입니다.



답변

다른 사람들이 말했듯이, 당신은 사용할 수 있습니다

:set list

와 함께

:set listchars=...

보이지 않는 문자를 표시합니다.
이제 공백 을 표시 하는 데 사용할 수있는 명시적인 옵션이 없지만 listchars에서는 모든 문자를 표시하지만 문자를 공백으로 표시 할 수 있습니다. 예를 들어, 내 모습은 다음과 같습니다

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<

이제는 사용 후

:set list

명시 적으로 다른 것으로 표시되지 않은 모든 것은 실제로 평범한 오래된 공백입니다.

평소와 같이 listchars작동 방식 을 이해 하려면 도움말을 사용하십시오. 표시 할 수있는 문자 (예 : 후행 공백) 및 수행 방법에 대한 유용한 정보를 제공합니다.

:help listchars

편집 도중 변경 사항을 쉽게 볼 수 있도록 토글을 추가하는 것이 도움이 될 수 있습니다 (source : VIM : set list!는 .vimrc의 토글로 ).

noremap <F5> :set list!<CR>
inoremap <F5> <C-o>:set list!<CR>
cnoremap <F5> <C-c>:set list!<CR>


답변

패치 7.4.710부터 listchars 를 사용하여 공백 대신 표시 할 문자를 설정할 수 있습니다!

:set listchars+=space:␣

따라서 모든 공백 문자를 문자로 표시 하려면 다음을 수행하십시오.

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
:set list

메일 링리스트에 대한 토론 : https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q


답변

:set list 사용하려면.

:set nolist 비활성화합니다.


답변

여기에 다른 답변이 더 포괄적이라고 생각하지만 탭과 공백을 시각적으로 구분하는 데 일반적으로 사용하는 트릭을 공유한다고 생각했습니다.

:syntax on
:set syntax=whitespace

다음은 공백 프로그래밍 언어 의 구문 강조 규칙입니다. 탭은 녹색으로 표시되고 공백은 빨간색으로 표시됩니다. 🙂

:set list탭은 녹색 하이 글 라이트없이 ^ I로 표시되지만 공백은 빨간색으로 표시되지만 다른 많은 답변에서 언급 한대로 결합 할 수 있습니다 .


답변

:set list모든 공백을 문자로 표시합니다. 공간을 제외한 모든 것은 일반 상태와 다르게 보일 것입니다. 즉, 평범한 오래된 공간이 여전히 보이면 실제로는 평범한 오래된 공간입니다. 🙂


답변

설정 한 경우 :

:highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none

그런 다음 공백을 검색하면 모든 공백 문자가 밑줄 문자로 표시됩니다.

공백의 “밑줄”을 토글하는 편리한 기능으로이 명령을 사용할 수 있습니다.

set hls
let g:HLSpace = 1
let g:HLColorScheme = g:colors_name
function ToggleSpaceUnderscoring()
    if g:HLSpace
        highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none
        let @/ = " "
    else
        highlight clear
        silent colorscheme "".g:HLColorScheme
        let @/ = ""
    endif
    let g:HLSpace = !g:HLSpace
endfunction

다음을 사용하여 기능을 바로 가기 키에 매핑하십시오.

nmap <silent> <F3> <Esc>:call ToggleSpaceUnderscoring()<CR>

NB : colorscheme을 설정 한 후 vimrc에서 함수를 정의하십시오.


답변

현재 버퍼의 구문 규칙에 따라 다음과 같이 작동 할 수 있습니다.

:syn match WhiteSpace / / containedin=ALL conceal cchar=Æ
:setl conceallevel=2 concealcursor=nv

+ 숨김 기능을 갖춘 vim 7.3이 필요합니다.

2014
년 10 월 24 일에 조금 확장했습니다. 물론 원뿔 문자에 대한 일부 강조 표시를 정의 할 수 있습니다.

  • 숨겨진 문자의 모양을 구성 할 수 있습니다. 강조 표시하려면 ‘Conceal’강조 표시 그룹을 한 번 이상 구성 :h hl-Conceal해야합니다 (색상 구성표에서이 작업을 수행 한 다음 다시 구성 할 필요는 없음 도움말 참조) . 그러나 숨겨진 모든 문자에 영향을줍니다 (예 : 구문 스크립트는 더 많은 항목을 숨기며 공백 문자로 표시됩니다).

    :hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE

  • 구문 스크립트가 skipwhite키워드를 사용하는 경우 Vim이 공백을 강조 표시하지 않는 것이 특이한 것 같습니다 . 주위에 방법이 없을 것입니다 (아마도 수정 될 것입니다. 나는 패치를 게시했습니다. )

  • 주위에 떠 다니는 패치가있는 것 같습니다 list. 이 모드 는 공백이 모드 에서 어떻게 보일지 사용자 정의 할 수있게 합니다. 글을 쓰는 시점의 최신 것이 이쪽 인 것 같습니다 . (이를 사용하려면 자신의 Vim을 빌드해야합니다).
  • conceallevelconcealcursor창 지역 옵션입니다. 즉, 창마다 다를 수 있습니다 (파일 유형 플러그인 또는 기타 플러그인 스크립트로 설정 될 수도 있음).
  • 구문 강조 파일은 구문 정의 파일을 다시로드 할 때마다 실행해야합니다. 이것은을 사용하여 수행 할 수있는 BufWinEnter가능성도 또는 Syntax또는 FileType자동 명령. (나는 실제로 어느 것이 작동하는지 테스트하지 않았습니다).

마지막 두 항목은 구문 규칙과 해당 옵션을 재설정하는 일부 자동 명령을 설정해야 함을 의미합니다. 첫 번째 경우 ColorScheme자동 명령을 사용하여 강조 표시를 설정하려고 할 수 있습니다 (숨겨진 문자는 실제로 색상 구성표의 설정에 관계없이 항상 동일하게 보이도록). 완전한 해결책을 찾기 위해 시작해야 할 romainl 답변을 살펴보십시오. 기능을 설정하면 토글 명령을 쉽게 설정하여 특수 강조 표시를 켜거나 끌 수 있습니다.

2014 년 10 월 26 일 업데이트이 질문 에서 플러그인 을 만들었습니다 .

업데이트 04/22/2015 Vim에는 list옵션을 사용하여이를 가능하게하는 패치가 포함되었습니다 . 간단히 설정 set list listchars+=space:␣
이것은 Vim 7.4.711부터 작동합니다.