Vim은 탭이 아닌 깨지지 않는 공백만 표시하도록 listchars를 설정합니다.

Vim은 탭이 아닌 깨지지 않는 공백만 표시하도록 listchars를 설정합니다.

에서는 또는 로 vim설정하고 싶습니다 . 하지만 나는 탭에 관심이 없습니다.nbsp!·

내 것에는 .vimrc다음이 있습니다.

 set listchars=nbsp:·
 set list

그러나 vim 세션을 열면 탭이 여전히 ^I.

달리기

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

...오류 없이 실행되며 변경 사항을 볼 수 있습니다.

내가 달리면

:set listchars=nbsp:!,tab:>

또는

:set listchars=nbsp:!,tab:

알겠어요

E474: Argument invalide: listchars=nbsp:!,tab:>

여기서 무슨 일이 일어나고 있는 걸까요? listcharsVim에서 탭을 강조 표시하지 않고 강조 표시만 하도록 어떻게 설정할 수 있나요 nbsp?

달리기VIM - Vi IMproved 7.4

답변1

문제는 ^IVim 방식이아니요탭 문자가 표시되는 이유는 필요한 탭이 a처럼 파일에 저장되어 있고 Vim이 Ctrl 문자 기호를 나타내는 방식이기 때문입니다 Ctrl+I.^I

탭이 사용될 때만 공백으로 표시되도록 하려면 :set list아래에서 그렇게 하도록 설정해야 합니다 'listchars'. (항목에 2~3개의 문자가 필요하므로 공백이 2개 필요하다는 점에 유의하세요 tab:.) 물론 트릭이 있습니다. 공백은 일반적 :set으로 명령의 구분 기호이므로 백슬래시를 사용하여 이스케이프 처리해야 합니다.

이것은 작동합니다:

set listchars=tab:\ \ ,nbsp:·

tab:\ \옵션 끝에 를 추가할 수도 있지만 후행 공백이 약간 어색해 보일 수 있습니다.

또 다른 옵션은 :let옵션 값에 액세스하기 위한 구문을 사용하여 설정하는 것입니다.&

let &listchars = 'tab:  ,nbsp:·'

두 번째 접근 방식의 한 가지 장점은 nbsp의 중간점과 같이 문자열의 특수 문자에 대해 문자열 이스케이프 시퀀스를 사용할 수도 있다는 것입니다.

let &listchars = "tab:  ,nbsp:\xb7"

(단순한 기본 ASCII 문자만 사용하여 vimrc 또는 그 조각을 보존하려는 경우, 예를 들어 복사 및 붙여넣기를 사용하여 이러한 조각을 다른 시스템으로 전송할 때 서식 및 공백을 보존하는 것이 걱정되는 경우에 이는 이점이 될 수 있습니다. 요즘에는 대규모로 대부분의 경우 원격으로 연결하는 것은 큰 문제가 아니지만, 그래도 언급해야겠다고 생각했습니다.)

관련 정보