Vim에서 이상한 캐릭터를 유발할 수있는 것은 무엇입니까?


13

NERD 트리 플러그인을 사용하는 Vim 에서이 이상한 문제가 있습니다. 여기서 그림에서 볼 수 있듯이 문자가 매우 이상하게 보입니다. ahat이있는 경우, ~ V 3/4 |-이어야합니다. LANG를 en_US로, LC_ALL을 en_US (Arch linux에서)로 설정했으며 Anonymous Pro 글꼴을 사용하고 있지만 글꼴을 전환해도 아무런 차이가 없습니다.

진짜 이상한


문자셋 문제처럼 보입니다. 플러그인은 UTF-8 문자셋을 사용하는 반면 gvim은 latin1을 예상하고 있습니다. 현재 더 완벽한 솔루션이 없어서 죄송합니다. " :set fenc=utf-8"을 (를) 실행 해 볼 수는 있지만 실제로는 장기적인 해결책이 아닙니다.
garyjohn

1
실제로 문자 인코딩 문제처럼 보입니다. 내 생각에는 데이터에 UTF-8의 0xE2 0x94 0x9C 인 ├ (상자 그리기 라이트 수직 및 오른쪽, U + 251C)이 포함되어 있다고 생각합니다. ISO-8859-1로 해석하면 첫 번째 바이트는 â이고 다른 바이트는 제어 코드입니다. 나머지는 불분명하지만 데이터를 UTF-8로 해석하면 문제가 발생합니다.
Jukka K. Korpela

네, 상자 그림이 의미가 있습니다. 항상 막대와 대시라고 생각했습니다. Anonymous Pro에는 상자 그리기 문자가 있습니다.
Tanner

@Tom Wijsman 제목에 대해 어떻게 변경했는지 잘 모르겠습니다. 제목을 수정했지만 수정 한 내용이 없습니다.
Tanner

@Tanner : "원인"과 물음표를 추가했습니다.
Tamara Wijsman

답변:



6

문제를 해결했습니다. 내가 해결하기 위해 한 것 :

  • 대신에 수정 /etc/locale.genLC_ALL="en_US.UTF-8"LC_ALL="en_US"
  • locale-gen루트로
  • Ran locale -a, 그것은 보여 주었다 en_US.UTF-8; 그러나 locale보였다 LC_ALL계속되고 en_US, 그 다음 내가 수출했다 기억 LC_ALL내에서 .bashrc이 문제를 해결하려고 지난 밤, 나는 변경 그래서 내 LANGLC_ALLen_US.UTF-8
  • 터미널을 새로 고침하고 gvim성공했습니다! 그것은 이상하지만, 상자 대신 삼각형 화살표 문자를 사용하고 있습니다. ISO-8859의 상자와 UTF-8의 삼각형을 사용할 수 있다고 생각합니다. 이로 인해 다른 프로그램에서 문제가 발생할 수 있습니다. 문제가 해결되면 해결하겠습니다.

1
이것은 나를 위해 이것을 고치기에 충분하지 않았습니다. 또한 multi_byte로 vim을 다시 컴파일해야했습니다. 지금은 잘 작동합니다.
chris.ritsen 2016 년

오늘 밤 내 버전의 vim이 multi_byte로 컴파일되었는지 확인하겠습니다.
Tanner 2018 년

LC_ALL="en_US.UTF-8나를 위해 충분
Jakub M.

3

어쩌면 이것은 해킹 가치가 없지만 그것은 나를 위해 일한 것 같습니다.

나는 줄을 바꿨다 NERDTree.vim:

call s:initVariable("g:NERDTreeDirArrows", s:running_windows) 

( !s:running_windows이전)

이제 멋진 +기호는 보이지 않지만 최소한 점프 디렉토리는 vim 내에서 작동합니다. 나는 solaris를 사용하고 있으며 루트 액세스 권한이 없다고 생각합니다.


1

내 변화는 부울 부정 (문자!)을 제거하는 것이 었습니다. git diff는 다음과 같습니다.

~ / .vim / plugged / nerdtree / plugin] $ git diff NERD_tree.vim
diff --git a / plugin / NERD_tree.vim b / plugin / NERD_tree.vim
인덱스 bbcc55f..6342b6c 100644
--- a / plugin / NERD_tree.vim
+++ b / plugin / NERD_tree.vim
@@ -66,7 +66,7 @@ 호출 s : initVariable ( "g : NERDTreeShowHidden", 0)
 s : initVariable ( "g : NERDTreeShowLineNumbers", 0)을 호출하십시오.
 s : initVariable ( "g : NERDTreeSortDirs", 1)을 호출하십시오.

-if! nerdtree # runningWindows ()
nerdtree # runningWindows () 인 경우
     s : initVariable ( "g : NERDTreeDirArrowExpandable", "--junk1-here--") 호출
     s : initVariable ( "g : NERDTreeDirArrowCollapsible", "--junk2-here--") 호출
 그밖에

1

.vimrc (vim config)의 다음 두 변수에 명시 적으로 값을 추가하면 문제가 해결되었습니다.

let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'

이것은 기본값이어야하지만 어떤 이유로 우분투 / vim에서 설정되지 않았습니다.


1

vimrc가 변경 guicursor되면 해당 줄을 제거하십시오. 이것들을 야기 / 방지하는 것으로 보이는 다른 변수들은 다음과 같습니다 :

set guicursor=쉘 에서 vimrc
set t_Co=에서 vimrc
export TERM=xterm-256color에서


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.