Điều gì có thể gây ra các nhân vật lạ trong Vim?


13

Tôi gặp vấn đề rất lạ ở Vim khi sử dụng plugin cây NERD, ở đó, như bạn có thể thấy trong hình, các nhân vật đang xuất hiện rất kỳ lạ. Trường hợp có ahat, ~ V 3/4 thì nên | -. Tôi đã đặt LANG của mình thành en_US và LC_ALL thành en_US (trong Arch linux) và đang sử dụng phông chữ Anonymous Pro, mặc dù việc chuyển đổi phông chữ không có sự khác biệt.

thật lạ


Nó trông giống như một vấn đề bộ ký tự. Plugin của bạn đang sử dụng bộ ký tự UTF-8 trong khi gvim của bạn có thể đang mong đợi latin1. Tôi xin lỗi tôi không có một giải pháp hoàn chỉnh hơn vào lúc này. Bạn có thể thử thực hiện " :set fenc=utf-8", nhưng đó không thực sự là giải pháp lâu dài.
garyjohn

1
Nó thực sự trông giống như một vấn đề mã hóa nhân vật. Tôi đoán là dữ liệu chứa ├ (BOX DRAWINGS LIGHT VERTICS AND RIGHT, U + 251C), là 0xE2 0x94 0x9C trong UTF-8. Được hiểu là ISO-8859-1, byte đầu tiên là â, các byte khác là mã điều khiển. Phần còn lại là tối nghĩa, nhưng buộc việc giải thích dữ liệu thành UTF-8 sẽ làm sáng tỏ vấn đề.
Jukka K. Korpela

Ok vâng, bản vẽ hộp có ý nghĩa, tôi luôn nghĩ rằng nó chỉ là một thanh và dấu gạch ngang. Anonymous Pro có các ký tự vẽ hộp.
Tanner

@Tom Wijsman Tôi không chắc bạn đã thay đổi gì về tiêu đề. Chỉnh sửa của bạn nói rằng bạn đã chỉnh sửa tiêu đề, nhưng không có gì thay đổi.
Tanner

@Tanner: Tôi đã thêm "Điều gì có thể gây ra" và một dấu hỏi.
Tamara Wijsman

Câu trả lời:



6

Tôi đã giải quyết vấn đề. Tôi đã làm gì để giải quyết nó:

  • Chỉnh sửa /etc/locale.genđể LC_ALL="en_US.UTF-8"thay vìLC_ALL="en_US"
  • Chạy locale-gennhư root
  • Ran locale -a, nó cho thấy en_US.UTF-8; Tuy nhiên, localecho thấy LC_ALLvẫn đang được en_US, sau đó tôi nhớ tôi đã xuất khẩu LC_ALLtrong tôi .bashrcđêm qua cố gắng để khắc phục điều này, vì vậy tôi đã thay đổi tôi LANGLC_ALLđểen_US.UTF-8
  • Tải lại thiết bị đầu cuối, chạy gvim, thành công! Mặc dù điều này thật lạ, hiện tại nó đang sử dụng các ký tự mũi tên hình tam giác, thay vì các ký tự hộp. Làm cho tôi nghĩ rằng nó sử dụng các hộp cho ISO-8859 và các hình tam giác cho UTF-8 có thể, điều này khiến tôi nghi ngờ rằng tôi có thể gặp vấn đề trong một số chương trình khác. Tôi sẽ sửa nó khi nói đến nó.

1
Điều này là không đủ để khắc phục điều này cho tôi; Tôi cũng đã phải biên dịch lại vim với multi_byte. Hoạt động tốt bây giờ.
chris.ritsen

Tôi sẽ kiểm tra xem phiên bản vim của tôi có được biên dịch với multi_byte vào tối nay không.
Tanner

LC_ALL="en_US.UTF-8là đủ cho tôi
Jakub M.

3

Có thể điều này không đáng để hack nhưng có vẻ như nó hiệu quả với tôi.

Tôi đã thay đổi dòng trong NERDTree.vim:

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

(đó là !s:running_windowstrước đây)

Bây giờ tôi không thấy bất kỳ +biểu tượng ưa thích nào , nhưng ít nhất các thư mục nhảy hoạt động từ bên trong vim. Tôi đang sử dụng solaris và tôi không nghĩ mình có quyền truy cập root.


1

Thay đổi của tôi là loại bỏ phủ định boolean (ký tự!). Đây là một git diff:

~ / .vim / đã cắm / nerdtree / plugin] $ git diff NERD_tree.vim
diff --git a / plugin / NERD_tree.vim b / plugin / NERD_tree.vim
chỉ số bbcc55f..6342b6c 100644
--- a / plugin / NERD_tree.vim
+++ b / plugin / NERD_tree.vim
@@ -66,7 +66,7 @@ gọi s: initVariable ("g: NERDTreeShowHidden", 0)
 gọi s: initVariable ("g: NERDTreeShowLineNumbers", 0)
 gọi s: initVariable ("g: NERDTreeSortDirs", 1)

-if! nerdtree # runningWindows ()
+ nếu nerdtree # runningWindows ()
     gọi s: initVariable ("g: NERDTreeDirArrowExpandable", "--junk1-here--")
     gọi s: initVariable ("g: NERDTreeDirArrowCollapsible", "--junk2-here--")
 khác

1

Thêm các giá trị một cách rõ ràng, vào 2 biến tiếp theo trong .vimrc (vim config) đã giải quyết vấn đề cho tôi:

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

Đây phải là các giá trị mặc định nhưng vì một số lý do, chúng không được đặt cho tôi trên ubfox / vim.


1

Nếu vimrc của bạn đang thay đổi guicursor, hãy thử xóa dòng đó. Các biến khác dường như gây ra / ngăn chặn những điều này là:

set guicursor=trong vimrc
set t_Co=trong vimrc
export TERM=xterm-256colortrong vỏ


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.