Recentemente, ao migrar para um novo ambiente de cluster, enfrentei o probleam de caracteres chineses exibidos incorretamente. Após várias tentativas sem suceso, finalmente encontrei uma solução eficaz que registro a seguir.
Primeiro, copie o arquivo de configuração padrão para o seu diretório home:
cp /etc/vim/vimrc ~/.vimrc
Em seguida, adicione o seguinte conteúdo ao arquivo .vimrc para corrigir os problemas de exibição de caracteres:
" Desativa o modo compatível com vi
set nocompatible
" Ativa destaque de sintaxe
syntax on
" Define o esquema de cores
colorscheme molokai
" Mostra números de linha
set number
" Destaca a linha atual
set cursorline
" Ativa a régua na barra de status
set ruler
" Define a largura para comandos de recuo
set shiftwidth=4
" Configura o comportamento da tecla Backspace
set softtabstop=4
set tabstop=4
" Desativa backups ao sobrescrever arquivos
set nobackup
" Muda o diretório atual para o do arquivo aberto
set autochdir
" Ativa plugins baseados no tipo de arquivo
filetype plugin indent on
" Configura comportamento de backups
set backupcopy=yes
" Configurações de busca case-insensitive com inteligência
set ignorecase smartcase
" Desativa busca contínua nas extremidades do arquivo
set nowrapscan
" Busca incremental
set incsearch
" Destaca resultados de busca
set hlsearch
" Desativa alertas sonoros de erro
set noerrorbells
set novisualbell
set t_vb=
" Ativa recuo inteligente
set smartindent
set backspace=indent,eol,start
" Configura altura da linha de comando
set cmdheight=1
" Mostra barra de status
set laststatus=2
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)
" Configurações de dobramento de código
set foldenable
set foldmethod=syntax
set foldcolumn=0
setlocal foldlevel=1
" Função para detectar o sistema operacional
function! DetectOS()
if has("win16") || has("win32") || has("win64") || has("win95")
return "windows"
elseif has("unix")
return "linux"
endif
endfunction
" Define caminho para arquivos de configuração do Vim
if DetectOS() == "windows"
let $VIMFILES = $VIM.'/vimfiles'
else
let $VIMFILES = $HOME.'/.vim'
endif
" Configurações de codificação para suporte a caracteres multibyte
if has("multi_byte")
" Define codificação como UTF-8
set encoding=utf-8
set termencoding=utf-8
set formatoptions+=mM
set fencs=utf-8,gbk
" Configurações para idiomas CJK
if v:lang =~? '^zh\|ja\|ko'
set ambiwidth=double
endif
" Configurações específicas para Windows
if has("win32")
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8
endif
else
echoerr "Desculpe, esta versão do (g)vim não foi compilada com suporte a +multi_byte"
endif
" Mapeamentos para navegação entre buffers
nnoremap <C-RETURN> :bnext<CR>
nnoremap <C-S-RETURN> :bprevious<CR>
" Mapeamentos para navegação entre abas
nnoremap <C-TAB> :tabnext<CR>
nnoremap <C-S-TAB> :tabprev<CR>
" Mapeamentos para navegação entre divisões de janela
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Mapeamentos para alterar tipo de arquivo rapidamente
nnoremap <leader>1 :set filetype=xhtml<CR>
nnoremap <leader>2 :set filetype=css<CR>
nnoremap <leader>3 :set filetype=javascript<CR>
nnoremap <leader>4 :set filetype=php<CR>
" Configurações específicas para Python
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType python map <F12> :!python %<CR>
" Copia seleção com Ctrl+C
vmap <C-c> "+y
" Configurações para JavaScript
let b:javascript_fold=1
let javascript_enable_domhtmlcss=1
autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict
autocmd filetype css set dictionary=$VIMFILES/dict/css.dict
autocmd filetype php set dictionary=$VIMFILES/dict/php.dict
" Configurações do plugin NERDTree
map <F3> :NERDTreeToggle<CR>
imap <F3> <ESC>:NERDTreeToggle<CR>
" Configurações do plugin NERDCommenter
let NERDSpaceDelims=1
let NERDCompactSexyComs=1
" Configurações do NeoComplCache
let g:NeoComplCache_EnableAtStartup = 1
let g:NeoComplCache_SmartCase = 1
let g:NeoComplCache_TagsAutoUpdate = 1
let g:NeoComplCache_EnableInfo = 1
let g:NeoComplCache_EnableCamelCaseCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
let g:NeoComplCache_SkipInputTime = '0.5'
let g:NeoComplCache_SnippetsDir = $VIMFILES.'/snippets'
" Configuração de TAB para completar sugestões
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" Configurações de geração de HTML com CSS
let html_use_css=1
Nota: Algumas configurações podem não funcionar em todos os ambientes. Caso ocorra, basta comentá-las.
Fonte: https://blog.csdn.net/weixin_36250487/article/details/79888103