Vim이 모든 공백을 문자로 표시하는 방법을 찾을 수 없습니다. 내가 찾은 것은 탭, 후행 공백 등에 관한 것입니다.
list
과 listchars
공간 직접 탭을 다음과 같은 것을 고려하십시오. 이 상황에서는 거의 보이지 않습니다. 나는 대부분의 상황을 잡을 수 있지만 모든 공간을 적절히 강조 표시하는 것이 좋을 것에 동의합니다.
Vim이 모든 공백을 문자로 표시하는 방법을 찾을 수 없습니다. 내가 찾은 것은 탭, 후행 공백 등에 관한 것입니다.
list
과 listchars
공간 직접 탭을 다음과 같은 것을 고려하십시오. 이 상황에서는 거의 보이지 않습니다. 나는 대부분의 상황을 잡을 수 있지만 모든 공간을 적절히 강조 표시하는 것이 좋을 것에 동의합니다.
답변:
다른 사람들이 말했듯이, 당신은 사용할 수 있습니다
: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>
.vimrc
파일 에 넣는 것이 좋습니다. 이 보이지 않는 문자를 표시하는이 예쁜 방법은 언제든지이:set list
페이지를 다시 검색하지 않고도 쉽게 사용할 수 있습니다 .
패치 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
:help listchars
"space"가 "listchars"에 유효한 옵션인지 확인하려면 입력 하십시오. 그렇지 않은 경우 vim을 지정된 @brettanomyces 패치로 업그레이드하십시오. 또는 공백을 보지 않으려면 set 명령에서 "space"를 그대로 두십시오.
space:·
MS Word, Notepad ++ 등과 같이 공백 문자 ( )에 유니 코드의 중간 점 (U + 00B7)을 사용합니다 .
<C-K>.M
에 vim을 입력하십시오 ·
. 자세한 내용 :h digraph
을 참조하십시오.
:set list
사용하려면.
:set nolist
비활성화합니다.
: set list!
더 낫다 :)
Shift
와 !
모두 열심히보다 입력 할 수 있습니다 no
. .vimrc에 넣으면 느낌표가 더 읽기 쉽다는 데 동의합니다.
:set list!
려면을 입력하지 않아도됩니다 nolist
. 는 !
단순히 현재 설정되어있는 어떤 반대를한다. 나는 때 특히 이것을 항상 사용합니다 :set paste!
. 나는 화살표 키를 누르 :set paste
거나 :set nopaste
lol 를 싫어하는 것을 싫어합니다
여기에 다른 답변이 더 포괄적이라고 생각하지만 탭과 공백을 시각적으로 구분하는 데 일반적으로 사용하는 트릭을 공유한다고 생각했습니다.
:syntax on
:set syntax=whitespace
다음은 공백 프로그래밍 언어 의 구문 강조 규칙입니다. 탭은 녹색으로 표시되고 공백은 빨간색으로 표시됩니다. :)
:set list
탭은 녹색 하이 글 라이트없이 ^ I로 표시되지만 공백은 빨간색으로 표시되지만 다른 많은 답변에서 언급 한대로 결합 할 수 있습니다 .
:set list
모든 공백을 문자로 표시합니다. 공간을 제외한 모든 것은 일반 상태와 다르게 보일 것입니다. 즉, 평범한 오래된 공간이 여전히 보이면 실제로는 평범한 오래된 공간입니다. :)
:set nolist
!
은 마지막에 전환 할 수 있습니다 .set list!
:se hls | /\_s
. set list
공백을 무시하고 모든 것을 얻습니다 . 으로 다시 해제하십시오 :se nohls
. 이 게시물에 대한 자세한 내용 : albertech.blogspot.com/2015/02/…
설정 한 경우 :
: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을 빌드해야합니다).conceallevel
및 concealcursor
창 지역 옵션입니다. 즉, 창마다 다를 수 있습니다 (파일 유형 플러그인 또는 기타 플러그인 스크립트로 설정 될 수도 있음).BufWinEnter
가능성도 또는 Syntax
또는 FileType
자동 명령. (나는 실제로 어느 것이 작동하는지 테스트하지 않았습니다).마지막 두 항목은 구문 규칙과 해당 옵션을 재설정하는 일부 자동 명령을 설정해야 함을 의미합니다. 첫 번째 경우 ColorScheme
자동 명령을 사용하여 강조 표시를 설정하려고 할 수 있습니다 (숨겨진 문자는 실제로 색상 구성표의 설정에 관계없이 항상 동일하게 보이도록). 완전한 해결책을 찾기 위해 시작해야 할 romainl 답변을 살펴보십시오. 기능을 설정하면 토글 명령을 쉽게 설정하여 특수 강조 표시를 켜거나 끌 수 있습니다.
2014 년 10 월 26 일 업데이트이 질문 에서 플러그인 을 만들었습니다 .
업데이트 04/22/2015 Vim에는 list
옵션을 사용하여이를 가능하게하는 패치가 포함되었습니다 . 간단히 설정 set list listchars+=space:␣
이것은 Vim 7.4.711부터 작동합니다.
.vimrc
있습니까?
Æ
이것에 대한 이상한 선택이 ·
아닌가?
공백으로 ''문자를 의미하는 경우 내 제안은 검색 / 교체 일뿐입니다. 다른 사람들이 암시 한 것처럼 비 인쇄 문자를에서 구성된 보이는 문자로 set list
변경 합니다 .listchars
공백을 다른 문자로 명시 적으로 표시하려면 아래와 비슷한 것이 트릭을 수행해야합니다.
:%s/ /█/g
그런 다음 변경 사항을 취소하여 다시 돌아가십시오.
(█을 얻으려면이 정확한 키 시퀀스를 눌렀습니다. :%s/ /CTRL-KFB/g)
:set list
보이는 문자 ( 'space')를 _non priting_ (??)로 바꾼다. 예 :match MyBlackBlockChar "appropriate_regex
를 들어 트릭을 수행 해야하는 내부 일치를 사용할 수 있는지 궁금 합니다.
공백을 강조 표시하려면 검색하십시오.
/ <space>
노트:
공백 및 탭을 강조 표시하려면 :
/ [<space> <tab>]
하이라이트를 제거하는 빠른 방법은 다른 것을 검색하는 것입니다. / asdf
(단순한 임의 문자 목록을 입력하십시오)
아래 코드는 Christian Brabandt의 답변을 기반으로하며 OP가 원하는 것을하는 것 같습니다.
function! Whitespace()
if !exists('b:ws')
highlight Conceal ctermbg=NONE ctermfg=240 cterm=NONE guibg=NONE guifg=#585858 gui=NONE
highlight link Whitespace Conceal
let b:ws = 1
endif
syntax clear Whitespace
syntax match Whitespace / / containedin=ALL conceal cchar=·
setlocal conceallevel=2 concealcursor=c
endfunction
augroup Whitespace
autocmd!
autocmd BufEnter,WinEnter * call Whitespace()
augroup END
그 줄을 당신에게 추가 ~/.vimrc
하고 새로운 Vim 세션을 시작하여 여전히 불완전한 마술이 일어나는 것을보십시오.
기본 색상을 편집하고 문자를 숨기십시오.
주의 사항 : *FuncBody
여러 언어로 된 구문 그룹의 항목으로 인해 중간 점이 표시되지 않습니다. 그 솔루션을 더 안정적으로 만드는 방법을 모르겠습니다 (아직?).
skipwhite
. 구문 그룹이 일치하지 않도록하는 구문 규칙 의 인수입니다 (모든 그룹에 포함될 수는 있지만).
나는이 질문에 대한 다른 모든 대답에 좌절했습니다. 왜냐하면 그들 중 어느 것도 유용한 방법으로 공백 문자를 강조 표시하지 않기 때문입니다. 공백을 문자로 표시하면 탭과 공백을 혼합하는 것이 유해한 공백 형식의 언어에 특히 도움이됩니다.
내 솔루션은 탭을 표시하고 여러 공백에 밑줄을 긋는 것입니다. 그것은 차용 mrucci의 대답 과 이 튜토리얼 . 구문 강조를 사용하므로 영구적입니다.
set list listchars=tab:\|\
highlight Whitespace cterm=underline gui=underline ctermbg=NONE guibg=NONE ctermfg=yellow guifg=yellow
autocmd ColorScheme * highlight Whitespace gui=underline ctermbg=NONE guibg=NONE ctermfg=yellow guifg=yellow
match Whitespace / \+/
이것을 사용하면 탭이로 표시 |
되고 공백이로 표시되므로 _
코드 스타일을 혼합 할 때 쉽게 알 수 있습니다.
내가 찾은 유일한 단점은이 스 니펫이 컨텍스트와 일치하도록 배경색을 조정하지 않는다는 것입니다 (댓글에서와 같이).
위의 모든 대답은 vim 내에서 공백을 표시하려고합니다. 보이는 공간을 점으로 표시해야한다고 주장하는 경우 다른 접근법이 있습니다 ...
vim에서 수행 할 수 없으면 글꼴을 완전히 변경하십시오. Ubuntu One Mono 글꼴을 복사하고 FontForge를 사용하여 편집했습니다. 별도의 글꼴로 사용하려면 글꼴의 전체 이름, 제품군, 기본 설정 제품군, 호환되는 전체 (글꼴 정보의 TTF 이름 아래에있는 FontFoge)를 변경해야합니다. 공백 문자를 편집하여 중간에 점을 표시하고 글꼴을 ~ / .fonts에 저장하십시오. 이제 gvim 또는 전체 터미널에 사용할 수 있습니다. "!" 문자, 줄을 제거하고 점을 중간으로 옮겼습니다. 5 분 이상 걸렸습니다 ...
참고 : 공백 문자 (0x20)를 변경하면 전체 vim 화면에 점이 생기는 불편 함이 발생하지만 탭과 공백이 분리됩니다 ...
기존 답변에서 원하는 것을 정확히 찾지 못했습니다. 아래 코드는 모든 후행 공백을 밝은 빨간색으로 강조 표시합니다. 에 다음을 추가하십시오..vimrc
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
공백을 표시하기 위해 특수 문자를 사용하는 것이 더 명확합니다. 토글 맵도 빠른 확인을위한 핵심 기능입니다.
2004 년 이후 업데이트되지 않은 오래된 vim 스크립트에서이 기능을 찾을 수 있습니다.
vim-scripts/cream-showinvisibles@vim.org
프로젝트 vim 스크립트 와 Vundle 덕분 에이 플러그인으로 다시 돌아올 수 있습니다.
vim-scripts / cream-showinvisibles @ github
더 나은이 내 두 센트가 추가하는 것입니다 설정 바로 가기를 (대신 미리 정의의 F4)
~ / .vimrc 에 이것을 추가하십시오
Plugin 'albfan/cream-invisibles'
let g:creamInvisibleShortCut = "<F5>" "for my F4 goto next error
vim에 플러그인 설치
:PluginInstall
그리고 당신은 간다
유니 코드 공백 문자를 포함하려면
set list
set listchars=tab:│\ ,nbsp:·
highlight StrangeWhitespace guibg=Red ctermbg=Red
" The list is from https://stackoverflow.com/a/37903645 (with `\t`, `\n`, ` `, `\xa0` removed):
call matchadd('StrangeWhitespace', '[\x0b\x0c\r\x1c\x1d\x1e\x1f\x85\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]')
결과:
") 처럼 보입니다.│
" 처럼 보입니다 (두 문자 : 긴 파이프와 서수 공간, 회색으로 colorscheme murphy
표시됨)·
"(한 문자, 회색으로 colorscheme murphy
표시됨 )처럼 보입니다 .
" 처럼 보입니다.set listchars=tab:»\ ,space:·
당신의 참고를 위해 사용 했습니다.
gvim
및에 대해 작동합니다 vim
.
.vimrc에 해킹 을 주석으로 유지하십시오 . 쉘에서 간단히 다음을 수행하십시오.
echo '
" how-to see the non-visible while spaces
" :set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
" set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
" :set list
" but hei how-to unset the visible tabs ?!
" :set nolist
' >> ~/.vimrc
:set list
. 그것은 우리의 질문에 대답하지 않습니다. (다른 사람들에게 : mrucci 의 답변은 도움이 될 수 있지만, 실제 해결책 은 아닙니다 .)