vi mostra como vim

5

Quando digito vi em um terminal, ele mostra a seguinte exibição:

Notequeelediz"vim not vi", eu tenho certeza que ainda não baixei o vim e que este não é vi vim: por exemplo, as teclas de seta imprimem ABCD em vez de mover.

    
por Mhmd 03.02.2015 / 17:15

6 respostas

16

Se você está usando o Debian, então vi está abrindo como vim por causa da entrada de vi in /etc/alternatives . Deixe-me quebrar isso para você.

Quando você faz ls -l /usr/bin/vi :

lrwxrwxrwx 1 root root 20 Jul  1  2014 /usr/bin/vi -> /etc/alternatives/vi

Como você pode ver, o binário vi é um link simbólico para /etc/alternatives/vi .

Agora, se você fizer ls -l /etc/alternatives/vi :

lrwxrwxrwx 1 root root 18 Jul  1  2014 /etc/alternatives/vi -> /usr/bin/vim.basic

É um link simbólico para o binário de vim.basic .

Então, em poucas palavras: /usr/bin/vi/etc/alternatives/vi/usr/bin/vim.basic

Como resultado, se você digitar vi no shell, vim.basic será aberto.

Você pode verificar e alterar os valores no /etc/alternatives pelo comando update-alternatives , mas acho que sua pergunta original já foi respondida.

    
por 03.02.2015 / 17:31
25

Embora o vi original ainda esteja disponível , não creio que seja muito usado nas distribuições atuais de linux ou BSD 1 aparentemente foi descartado em 2000 depois de ter sido desativado uma década antes disso, e o último lançamento foi em 2005.

Existem várias implementações de vi, o que é realmente um POSIX especificação . Estes incluem nvi e elvis , mas o mais popular é provavelmente vim .

Em sistemas que usam o vim, vi será simplesmente um link para ele e, quando invocado dessa maneira, ele deve iniciar no modo compatível com vi, de modo que o sistema tenha algo que esteja em conformidade com a especificação POSIX. No entanto, isso não altera o nome real do programa, que é vim, e é isso que você vê na tela do título.

1. Embora seja disponível no Arch , pelo menos. Você pode encontrar outros lugares também.

    
por 03.02.2015 / 17:30
9

Em muitos sistemas Linux, o padrão vi é realmente uma versão do Vim, normalmente um compilado com menos opções (sem suporte embutido em perl e python, sem GUI, etc) do que o que você obteria se instalasse um pacote Vim.

for example the arrow keys print ABCD instead of moving.

Isso é causado por uma inconsistência entre o emulador de terminal e o entendimento do Vim sobre a entrada terminfo / termcap que está sendo usada. Geralmente, isso é causado pelo Vim ter enviado o código t_ks para "ativar" as teclas de direção (na verdade, coloca-as em um modo para o qual enviam <1b>OA em vez de <1b>[A ), mas as chaves esperadas são para o outro modo ( por exemplo, t_ku=<1b>[A para a seta para cima). Tente alterar sua variável de ambiente TERM ou a opção vim ( set term=builtin_ansi ou builtin_xterm no vimrc pode funcionar, embora possa desativar a cor), usando um terminal diferente ou como último recurso adicionando set t_ks= t_ke= ao seu arquivo .vimrc desative esta troca de modo. Esta é uma solução sugerida nos arquivos de ajuda do vim, o próximo parágrafo após :help cs7-problem .

Este comportamento não é um sinal de que é "na verdade vi não vim" - a maioria das versões "genuínas" do vi ou nvi também suportam as teclas de seta.

    
por 03.02.2015 / 17:53
4

A pergunta original já foi respondida explicando que o vi é um alias para o vim, e que é normal que o comando vi inicie o vim.

O que deve ser notado é que o vim é (em algumas configurações) sensível ao nome pelo qual é chamado. Mesmo que vi e vim executem o mesmo binário, eles podem se comportar de maneira diferente.

    
por 03.02.2015 / 20:46
2

Note em várias distros baseadas no Debian que o link simbólico em / bin / vi é 'busybox' e não vim. Em alguns casos, isso pode ser OK, mas os recursos que o busybox fornece são um conjunto mínimo e, por algum motivo, parecem variar de acordo com o modo como o busybox foi compilado.

Se o vim estiver instalado, ele geralmente substitui o link do busybox - mas às vezes não é assim - busybox ainda pode ser ligado ao / bin / vi enquanto o vim está vinculado ao / usr / bin / vi. Variável de ambiente PATH na qual é encontrado primeiro. Um usuário típico pode receber 'vim', mas quando logado como 'root', use o busybox vi.

Melhor verificar e ver qual vi link você está usando (qual vi) e o que está vinculado.

    
por 12.07.2015 / 21:23
2

De qualquer forma, vim é um superconjunto de vi . Ou seja, tudo o que funciona em vi funciona em vim . Para todos os efeitos, é uma versão mais extensível de vi .

for example the arrow keys print ABCD instead of moving.

Existem 2 soluções para isso.

  • Altere a codificação de caracteres dos terminais para algo compatível com vi .
  • Adicione set nocompatible em algum lugar no seu ~/.vimrc (você pode criar o arquivo se não tiver). em seguida, reinicie o seu termninal.

A segunda solução sempre funcionou melhor para mim.

    
por 03.02.2015 / 23:17

Tags