Maiores diferenças entre Vim e VI


25

Hoje, decidi experimentar o Vi em vez do Vim, queria ver o quão diferente é. Não notei muitas diferenças, a maior coisa que notei foi como Vi não disse -- INSERT --quando entrei no modo de inserção, e houve algumas pequenas diferenças na interface.

Isso me fez pensar, quais são as maiores diferenças entre Vi e Vim?


1
Você obviamente não está usando muitos recursos avançados do vim. seleção de bloco, pesquisa por palavra sob o cursor, número de incremento sob o cursor, destaque de sintaxe etc.
Jim

Respostas:


25

Na verdade, existe um comando de ajuda no vim para informar sobre as diferenças: :help vi_diff

No site do Vim , os maiores são:

desfazer ilimitado

Você pode executar xxxx e desfazer cada uma das quatro exclusões. Quando foi a última vez que você digitou "jjjj" e descobriu que a tecla caps lock estava ativada? Você acidentalmente juntou cinco linhas, e Vi pode desfazer apenas o último comando. No Vim, você pode desfazer todos os quatro comandos "J" e recuperar o texto original.

portabilidade

Vi está disponível apenas no Unix. O Vim funciona em MS-Windows, Macintosh, Amiga, OS / 2, VMS, QNX e outros sistemas. E também em todos os sistemas Unix.

realce de sintaxe

O Vim pode ser programado para destacar partes do buffer em diferentes cores ou estilos, com base no tipo de arquivo que está sendo editado. Existem centenas de sintaxe destacando conjuntos de regras empacotados com o Vim.

GUI

O Vim funciona bem em um console, mas pode ser executado de forma nativa em muitas GUIs, incluindo X Windows, Mac OS e Microsoft Windows. Ele usa widgets nativos da GUI para rolagem, divisão de buffers e menu. Também pode conversar com a área de transferência.


4
Alguns mais diferenças são mencionados no FAQ
Christian Brabandt

De acordo com o leia - me , alguns desses sistemas operacionais não são mais suportados.
Rolf

7

O Vim possui muitos recursos que o Vi não possui, mesmo os recursos que não são obviamente "avançados".

Na prática, isso significa que, se você está acostumado ao Vi, provavelmente encontrará poucas diferenças se começar a usar o Vim (ou algum outro clone do Vi), mas se estiver acostumado ao Vim e se seus "reflexos" incluirem recursos como destaque no modo visual, qualquer ação de tecla que comece com "g" ou "z", qualquer ação de texto com "i" ou "a" [por exemplo, "daw" para excluir uma palavra sob o cursor]], navegando com as setas no modo de inserção etc, você descobrirá que eles não funcionam no Vi.

Há também a questão do que exatamente você estava usando quando diz que "tentou o Vi". Em muitos sistemas, "vi" realmente executa o Vim, em um modo em que algumas dessas diferenças se aplicam (modo de exibição padrão como você observou, as teclas de seta não funcionam no modo de inserção) e outras não (modo visual e as teclas g / z funcionam ), e alguns recursos dependem de uma opção de tempo de compilação que às vezes é desabilitada no "tiny Vim" usado para isso (objetos de texto, como "aw" uma palavra, são um desses). Você não poderá obtê-los se executar o Vi real ou se "vi" for algum outro clone com menos ou diferentes recursos que o Vim, como nvi ou VILE.

E, do lado obscuro, embora o "modo Vim pequeno no Vi" obviamente não tenha recursos que um Vim completo não possui, existem alguns recursos do Vi original genuíno que o Vim não possui. Estes estão documentados em :help vi-differences.


2
Eu apostaria fortemente que o OP realmente tem um "pequeno vim" vi.
Kevin

2

A maioria das comparações oferece mais funcionalidade ao vim do que ao vi, mas há uma exceção. Havia o modo "aberto" no vi, e o vim realmente não possui esse modo.

O modo aberto é um modo de linha única usado antigamente com terminais que não tinham monitores eletrônicos, como teletipos, impressoras de carta e similares, e também com monitores em que o cursor permanece apenas na parte inferior.

Eu sei que há documentação por aí que diz que o vim simula o modo aberto, mas minha experiência é que não, pois eu o vi usado com o vi com meus próprios olhos e nunca vi o vim fazer isso. Parece que o vim apenas usa o opencomando simplesmente para abrir e editar um arquivo no modo visual. Eu acredito que a documentação oficial do vim afirma que ele não suporta o modo aberto.


Eu tenho o ex-vi.sourceforge.net instalado, que é uma porta do Vi original. Como inicio este modo aberto? A página de manual menciona isso ao falar sobre ^R, mas não dá outra ajuda. :open some/fileretorna open: No such command from open/visual.
Muni

@ muru Qpara entrar no modo ex, então open. zpara mostrar o contexto da linha atual quando você estiver no modo aberto. Para recuar, Qentão vi.
Antônio

0

Eu acho que é muito difícil fazer a comparação, devido às mudanças no vi que aconteceram ao longo do tempo.

Quando estava na faculdade, usei o plain-vanilla vi em um terminal burro (e também em um emulador de terminal em um Mac) que se conectava aos mainframes usando o Sistema V. Você nem consegue mais encontrar isso.

Mas nem tenho certeza se isso era verdade vi. Naquela época, havia muitos clones e portas criados porque o vi não era de código aberto na época. E quando os fornecedores criaram clones, eles adicionaram recursos que não estavam no vi. A história é meio complicada. Você pode lê-lo na Wikipedia e em outros lugares.

Portanto, se você não estava usando determinados fornecedores / hardware, não estava usando o vi, mas algo como o vi.

Mas eu me lembro do vi (ou do clone que eu estava usando) sendo muito minimalista em sua interface (sem cores, sem rótulos INSERT, sem desfazer múltiplos, etc.), mas poderoso no que ele realmente poderia realizar. Muito prático.


0

O FAQ do Vim tem uma lista bem formatada: https://vimhelp.org/vim_faq.txt.html#faq-1.4

Trecho do FAQ:

  • Desfazer em vários níveis
  • Guias, várias janelas e buffers
  • Modo de inserção flexível (pode usar as teclas de seta no modo de inserção)
  • Macros
  • Modo visual (selecione visualmente seções do texto)
  • Operadores de bloco
  • Sistema de ajuda online
  • Edição e histórico da linha de comando
  • Conclusão da linha de comando (conclusão da guia)
  • Rolagem horizontal (linhas longas)
  • Melhorias em Unicode e internacionalização.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.