Como eu defino o idioma da IU no vim?

102

Eu vi isso no reddit, e me lembrou de um dos meus problemas do vim: ele mostra a IU em alemão . Maldito seja, vim! Eu quero inglês , mas como meu sistema operacional está configurado em alemão (o padrão em nosso escritório), acho que o vim está realmente tentando ser útil.

Que encantamentos mágicos devo realizar para que o vim mude o idioma da IU? Tentei pesquisar no Google em várias ocasiões, mas não consigo encontrar uma resposta (Não, Google, você é meu amigo * pat *, * pat *, mas já sei como alterar o realce de sintaxe, obrigado!) ...

EDITAR: Usando todas as boas dicas abaixo, acabei adicionando isso no topo do meu .vimrc(executando o Vim 7.2 no Windows 7)

set langmenu=en_US.UTF-8    " sets the language of the menu (gvim)
language en                 " sets the language of the messages / ui (vim)
Daren Thomas
fonte
Do meu lado, language en sempre me deu um erro quando iniciei o gVim. Usei a linguagem C e funcionou perfeitamente!
ghigad de

Respostas:

34

Como Ken observou, você quer o :languagecomando .

Observe que colocar isso em seu .vimrcou .gvimrcnão o ajudará com os menus no gvim, uma vez que sua definição é carregada uma vez na inicialização, bem no início, e não é relida novamente depois. Portanto, você realmente precisa definir LC_ALL(ou mais especificamente LC_MESSAGES) em seu ambiente - ou em sistemas não Unixoid (por exemplo, Windows), você pode passar a --cmdchave (que executa o comando fornecido primeiro, em oposição à -copção):

gvim --cmd "lang en_US"

Como mencionei, você não precisa usar o LC_ALL, o que mudará à força todos os aspectos do seu ambiente de computação. Você pode fazer coisas mais sutis. F.ex., minhas próprias configurações de local são assim:

LANG=en_US.utf8
LC_CTYPE=de_DE.utf8
LC_COLLATE=C

Isso significa que obtenho um sistema basicamente inglês, mas com semântica alemã para letras, exceto que a ordem de classificação padrão é ASCIIbética (ou seja, classificar por ponto de código, não de acordo com as convenções de idioma). Você pode usar uma variação diferente; veja man 7 localepara mais.

Aristotle Pagaltzis
fonte
1
Terei que verificar isso mais um pouco - não está funcionando AFAIR no momento, mas só terei acesso à máquina em questão na próxima quarta-feira. Obrigado por sua resposta.
Daren Thomas,
não funcionou para mim (vim reclamou que não conseguiu encontrar en_US ?!) mas a solução @ August-Lilleaas funcionou!
Stefano
17
No Windows 7 eu tive que usargvim --cmd "lang English_United States"
hfs
2
você também pode adicionar language messages enem seu vimrc (nota: deve ser no início).
vorou ​​de
4
@hfs Muito obrigado pelo seu comentário. Eu adicionei language English_United Statesem meu _vimrcarquivo e isso me ajudou no VIM 7.4 e no Windows 8.
Artyom
98

Para referência, no Windows (7) acabei de excluir o diretório C:\Program Files (x86)\Vim\vim72\lang. Isso o tornava um fallback para en_US.

August Lilleaas
fonte
14
Mudei para lang_ori caso precise mais tarde.
shin
1
\usr\share\vim\vim80\langpara usuários de MinGW ou Cygwin no Windows ajuda
it3xl
@AugustLilleaas Você acha que excluir uma langpasta é seguro?
Danny
38

Tente isso em _vimrc. Funciona com meu win7.

set langmenu=en_US
let $LANG = 'en_US'
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
zjk
fonte
O mesmo aqui, este funcionou. Eu acredito que o delmenu - menuciclo é crucial.
ThomasH
18

Colocar esta linha de código no topo do meu arquivo _vimrc salvou meu dia:

set langmenu=en_US.UTF-8
Pavel Bastov
fonte
9
Na verdade, está definido langmenu = en_US.UTF-8, pelo menos no meu gVim 7.2
Rytmis
Funciona perfeitamente, é claro, como Rytmis diz sem os dois pontos (:)
Piotr Owsiak
nota: isto irá definir o idioma do menu, mas as mensagens etc. precisam do: idioma definido.
Daren Thomas
Observe que você pode tornar mais fácil usando em set langmenu=nonevez de especificar o idioma real (inglês).
Rabarberski
11

Isso funcionou para mudar o idioma do menu do vim

set langmenu=en_US.UTF-8  [or just set langmenu=en for short]

Mas

language en 

me deu um erro dizendo que não poderia ser definido como um idioma, mas esta linha fez o trabalho

:let $LANG = 'en'

Os últimos vêm dos documentos do Vim . Eu adicionei as duas linhas no início do arquivo _vimrc. Eu uso um computador com Windows 7 64.

PS: esta linha muda o idioma e o idioma dos menus

language messages en

No arquivo .vimrc (ou arquivo _vimrc se você estiver no Windows)

PerseP
fonte
6

Ubuntu 10.10 + VIM 7.2 IMproved. O código abaixo muda o idioma do console vim. Adicione-o no topo do seu vim.rc

if has('unix')
    language messages C
else
    language messages en
endif
Anton Orel
fonte
4

Estas duas linhas no início do seu arquivo .vimrc farão o trabalho:

let $LANG = 'en'
set langmenu=none
Marc
fonte
3

Inicie o vim com um local alterado:

LC_ALL=en_GB.utf-8 vim

Ou exporte essa variável por padrão em seu bashrc / perfil.

Armin Ronacher
fonte
3

:Idioma de ajuda

: linguagem fr_FR.ISO_8859-1

Ken
fonte
3

Adicionar isso a _vimrc funciona para mim no Windows 8:

set langmenu=en_US
let $LANG = 'en_US'

(observe que _vimrc está no mesmo diretório que contém meu diretório vim74, esse é o arquivo _vimrc que o vim lê na inicialização)

Ignacio
fonte
1

Não sei por que todas as respostas acima não funcionaram para mim. Continuei recebendo erros sobre as localidades não existentes. Talvez seja uma coisa do Windows. De qualquer forma, minha solução foi adicionar isso ao meu vimrc: let $ LANG = 'en'

Ah, falei muito cedo. Os menus do gVim ainda estão em japonês, mas a tela de introdução está em inglês.

HydroKirby
fonte
1

Windows - Dois Vim

Nada daqui me ajudou até que eu percebesse que tenho 2 Vim.

  1. Git Bash via MinGW (Cygwin, mintty)
  2. Uma instalação separada nos Arquivos de Programa do Windows

O próximo comando irá filtrar todos os arquivos vimrc assistidos e suas localizações.

vim --version | grep vimrc
  • _vimrc (Windows e CMD)
  • .vimrc (Bash para Git)
  • vimrc (tem locais diferentes para ambos)

1: Vim no Windows e CMD

Apenas renomeando (deleção) do idioma pasta me ajudou.

Você pode encontrá-lo aqui C:\Program Files (x86)\Vim\vim80\lang

Tentei todas as configurações listadas aqui. Foi inútil.

2.1: Git Bash por meio de MinGW, Cygwin, mintty

Para Git Bash, adicionei language messages en_USno topo doC:\Program Files\Git\etc\vimrc

Claro, se você preferir excluir a pasta lang, você pode encontrá-la aqui

  • C:\Program Files\Git\usr\share\vim\vim80\lang
  • C:\Users\User_name_xxx\AppData\Local\Programs\Git\usr\share\vim\vim80\lang para uma instalação de usuário local.

2.2: Ajustando apenas o Bash do Git (MinGW64, Cygwin, mintty)

No final, para o Bash no Windows, optei por pular as manipulações com o vimrc

Eu abri C:\Program Files\Git\etc\bash.bashrc e adicionei a próxima linha

LANG='en_US'

ou

LANG=C

mas não use en_US.UTF-8porque torna estranhos caracteres para alguns comandos bash. Por exemplo em `find 'xxx_yyy_zzz_aaa.bbbddd' para arquivo não existente.

it3xl
fonte
1

Tente adicionar isso ao seu _vimrc:

let $LANG='en_US'
Lucien
fonte
0

Teve um problema semelhante, mas nenhuma das soluções acima funcionou: /superuser/552504/vim-ui-language-issue/552523

Eu resolvi isso removendo todos os pacotes do vim e compilando o vim das fontes .

Espero que ajude alguém.

Alexander Paramonov
fonte
0

Se você estiver no Windows e não quiser se incomodar em emitir comandos

Para evitar que a GUI carregue arquivos de localização

Basta acessar Program Files\Vim\vim80\lange colocar um sublinhado como prefixo na frente de todos os arquivos que parecem ter algo a ver com sua localidade.

Para evitar que o próprio VIM carregue arquivos de localização

Na mesma pasta acima, prefixe com um sublinhado a pasta nomeada com o código do seu país.

Observação : o Windows 10 provavelmente solicitará privilégios de administrador, emitindo um aviso do UAC.

A propósito

Essa mesma técnica pode ser aplicada a várias ferramentas Unix / Linux portadas no Windows e, geralmente, a todos os pacotes de software onde os arquivos de localização podem ser acessados ​​prontamente. Se você renomeá-los para evitar que o aplicativo os encontre, o idioma substituto provavelmente será o inglês.

sm
fonte