Vi vs vim, ou, existe alguma razão pela qual eu gostaria de usar o vi?


84

Eu sei um pouco sobre os editores de texto * NIX (atualmente migrando de nanopara vim) e, depois de dar uma olhada no Unix & Linux SE, percebi que vié usado em vez do 'vim' em um número razoável de perguntas. Eu sei que 'vim' significa 'Vi IMproved' e, com isso em mente, estou me perguntando por que alguém preferiria usar o vi em vez do vim. O vi tem alguma vantagem significativa sobre o vim?

Edit: Eu acho que minha pergunta está sendo mal interpretada. Eu sei que o vim é, na maioria das vezes, significativamente mais poderoso e completo em termos de recursos do que o vi. O que eu quero saber é se existem casos possíveis em que o vi tem uma vantagem sobre o vim, como menos uso de memória, prevalência nos sistemas * nix, etc.


25
O bom vié que você pode esperar que ele esteja em todos os sistemas compatíveis com POSIX.
Jordanm

11
Na verdade, o Ubuntu instalação padrão inclui vie não vim.. Ubuntu é um dos mais distro amigável btw ;-)
amyassin

10
@amyassin Isso está incorreto, o Ubuntu, como a maioria das distribuições Linux, inclui vim. vié apenas um link simbólico que eventualmente aponta para vima instalação padrão.
Jlliagre

2
Meu conselho é: Use o Vim, mas aprenda a viusar as especificaçõesvi do POSIX . Dessa forma, você tem conhecimento portátil e também conhece extensões do Vim.
Curinga

11
@DDK Você perdeu "eventualmente" na minha declaração. "ls -l / etc / alternative / vi" -> "lrwxrwxrwx 1 raiz raiz 17 de janeiro de 2016 1 / etc / alternative / vi -> /usr/bin/vim.tiny" "
jlliagre 12/16/16

Respostas:


61

vié (também) um editor padrão do POSIX . Existem muitas implementações e vimé provavelmente a mais popular, pelo menos no Linux.

Embora muitos sistemas operacionais tradicionais compatíveis com Unix ofereçam viimplementações muito próximas do padrão, vimadicionou muitos recursos extras que o tornam uma faca de dois gumes.

Obviamente, essas extensões geralmente são projetadas para facilitar o processo de edição e fornecer recursos e funcionalidades úteis. No entanto, uma vez que você esteja acostumado a alguns deles (não os cosméticos, como coloração de sintaxe, mas aqueles que alteram o comportamento do editor), você pode facilmente esquecer que eles são específicos; e usar uma implementação diferente, incluindo as baseadas no código BSD original, pode ser muito frustrante. O oposto também é verdade.

Isso é bastante semelhante ao problema que ocorre com scripts que usam basismos não POSIX enfrentados por implementações de shell mais ortodoxas como dashou ksh.


29

O vi não tem nenhuma vantagem significativa sobre o vim, pelo contrário, é o contrário. O Vim tem mais vantagens que o Vi. Você pode estar interessado em: Por que, oh POR QUE, esses #? @! os malucos usam vi?

Editar também leia: O aprendizado do VIM vale o esforço?


4
Sim. Eu não uso nenhum IDE porque os editores que eles o forçam a usar não são o Vim.
Keith

11
@ Keith Eu uso o Xcode e o Eclipse e ainda consigo editar apenas com o vi.
ott--

O @Keith SlickEdit tem uma ótima emulação do Vim, e a IDEA está chegando perto. Além disso, o Visual Studio possui o ViEmu.
precisa saber é o seguinte

11
O IntellIJ também possui um bom plug-in vim que substitui o comportamento do editor padrão.
precisa saber é

24

Depois de passar grande parte da minha vida (sem incluir a infância) editando confortavelmente com o Vim, passei cerca de um mês usando apenas o vi. Ao fazer isso, percebi que dependia do Vim para todas as minhas necessidades de modificação de texto. Antes da minha viagem com o vi, sempre que eu tinha que substituir algum texto ou executar uma operação semelhante em um grande grupo de arquivos, eu apenas abria os arquivos no Vim e executava um :bufdocomando, e sempre que eu precisava recuar ou formatar alguns arquivos, Eu os abria no Vim e usava os comandos =e o Vim gw. Eu era dependente do Vim. Depois de perceber que o vi não possuía esses comandos, fui forçado a realizar transformações em massa de textos sede aprendi bastante sobre outros programas, como awkeindent. Embora eu tenha voltado a usar o Vim no final, o conhecimento que adquiri usando um editor com menos recursos foi substancial e provou ser extremamente útil. Além de aprender sobre ferramentas fora de um editor de texto, também me familiarizei melhor com o vi. Sempre que estou trabalhando em um novo sistema ou servidor que não possui o Vim, me sinto muito mais confortável usando o vi do que antes da minha excursão de um mês.

Além disso, no mês passado, instalei o Linux em um tablet WM8650 barato e constatei uma diferença perceptível no desempenho entre o Vim e o vi, por isso tenho a tendência de usar o vi no tablet.


3
Acho que esse é um problema comum em TI - as ferramentas que nos ajudam também podem obscurecer as coisas que seria melhor aprendermos.
Danno

Na verdade, a manipulação edição no local de arquivo em muitos arquivos pode não portably ser feito com Awk ou Sed quer . (O -iinterruptor de ambos é uma extensão GNU.) Mas você pode usá-los portably com algo parecidofor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard

12

Eu teria dificuldade em viver sem vim, mas não suporto vi . No entanto, aprender o primeiro o deixará pelo menos com uma idéia de como lidar com o posterior, quando isso é tudo o que está disponível.

A interface do vim, por padrão, é bem próxima do vi. Se estou trabalhando em um sistema com vim, a primeira coisa que faço é adicionar essas coisas a ~/.vimrc:

syntax enable
set nocp
set wildmenu

Há um monte de outras coisas que eu prefiro - agora, numeração, etc. - mas não importa. "enable sintaxe" apenas ativa o destaque básico da sintaxe (um pouco mais robusto: também filetype plugin oné fundamental); "nocp" desativa a compatibilidade do vi e é isso que começa a distinguir o vim do antigo vi (por exemplo, ele habilita o showmodeque torna toda a experiência um pouco mais humana, já que agora você tem alguma pista sobre se está no comando ou ~ INSERIR ~ modo). "wildmenu" fornece apenas um menu de conclusão horizontal ao fazer algumas coisas, o que facilita a vida também.

Os recursos de edição de texto do vim são inigualáveis ​​- exceto o emacs, nunca vi ou ouvi falar de um software que se aproxima. Eles não são fáceis de aprender, mas uma vez que você os conhece, são muito mais rápidos que os menus do mouse para usar e muito mais dinâmicos do que as simples alternativas de macro-chave nas interfaces baseadas no menu do mouse. Para programação, às vezes uso o vim juntamente com um IDE como o Eclipse, mas faço a maior parte do trabalho no vim.

Se você seguir esse caminho, lol, consulte os plugins de preenchimento automático e lista de tags. E cuidado com o lado sombrio.


Eu sempre adiciono set mouse=atambém.
ott--

Em relação a seu comentário programação, você pode encontrar eclim interessante ...
ire_and_curses

@ire_and_curses: ainda não tentei. O Eclipse e o vim monitoram os arquivos de origem e permitem que eles sejam atualizados externamente, e alternar de uma área de trabalho para outra é alternar de uma área de trabalho para outra. Parece bastante a idéia tho.
GOLDILOCKS

Embora eu não ache que essa resposta deva ser a resposta escolhida (já que é tendenciosa), é exatamente o tipo de perspectiva que é útil para entender as diferenças. Obrigado por tomar uma posição.
geneorama

8

A vantagem é que o vi geralmente pré-instalado no UNIX corporativo como AIX ou Solaris. Além disso, o vim não está acessível na mídia de instalação.


1

Percebi que optei Vipor VIMcopiar e colar um documento de texto ou arquivo de configuração que usei catcomando. Isto porque, quando eu tento ctrl-ce, em seguida, ctrl-vpara o VIMdocumento aberto, ele força todas as linhas de ter um comentário na frente deles. Então, quando eu uso Vipara ctrl-vou pastepara o Vidocumento aberto, ele cola exatamente o que eu copiado. Fora isso, eu uso o VIMdia todo.

Desfrutar!


5
Tente:set paste
Patrick

3
set pastetoggle = <F2> em .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Dave

1

Como as respostas anteriores já mencionaram, o vi vem com praticamente todos os sistemas UNIX disponíveis.

Eu só queria adicionar um exemplo. O Arch Linux é uma distribuição particularmente popular e leve, que nem o Instalador nem a distribuição base vêm com o vim por padrão, mas ambos vêm com o vi.

Isso não é uma vantagem para o vi per se , porque você pode simplesmente instalar o vim manualmente, e há pouco a ser realizado na instalação que requer um editor de texto, e nada em que o vim seja superior ao vi para o objetivo pretendido. Mas entender a diferença e que o vi é mais onipresente e leve que o vim oferece algumas vantagens de nicho.

Além disso, apenas para ser abrangente, ninguém ainda mencionou explicitamente que o vi é um precursor direto do vim. O Vim foi projetado especificamente para ser tudo o que vi era e muito mais.

Portanto, de uma maneira muito direta, o vim é superior ao vi, porque foi projetado para ser .


1

A única razão para usar o vi sobre o vim é quando você não tem outra escolha.

Há muitas, muitas razões pelas quais vim significa "vi melhorado"!

Tomando emprestado de um post relacionado, eu respondi: -

  1. Várias janelas - horizontal, vertical e abas.
  2. Destaque visual.
  3. Ajuda online através do comando: help.
  4. Grave macros em um registro que você pode executar.
  5. Desfazer (e refazer) várias vezes, em vez da alternância insana de desfazer o vi antigo.
  6. Histórico da linha de comando, histórico de pesquisa.
  7. Um idioma inteiro incorporado junto com uma série de funções disponíveis, por exemplo, getcwd ()
  8. Correspondência de padrões amplamente expandida.
  9. Conclusão de palavras via ctrl-P e ctrl-N.
  10. Um navegador de arquivos embutido (um pouco desajeitado, mas pode ser útil).
  11. A tecla ESC realmente encerra os comandos dos quais você estava tentando escapar, em vez de (insanamente) executá-los como o vi.
  12. Capacidade de executar comandos em todos os buffers, args ou janelas via bufdo, argdo & windo.

Você provavelmente poderia ter trazido as "muitas, muitas" razões mencionadas na resposta unix.stackexchange.com/a/425597/85039 aqui. Isso tornaria essa resposta um pouco melhor; caso contrário, parece mais um comentário do que uma resposta real #
Sergiy Kolodyazhnyy 21/02

Ponto tomado. Resposta atualizada, tomando emprestado uma resposta relacionada que eu fiz ontem.
Paul T

1

Isso é exercido por Vim Koans :

Master Wq e o Unix master

Um antigo mestre do Unix veio para o Master Wq. Estou preocupado, Wq. Você ensina o caminho do Vim. vi é santo, mas Vim não é; seu código se espalha, seus recursos lotam a memória; seus binários são vastos, seu comportamento inconsistente. Este não é o caminho do Unix. Temo que você engane seus alunos. O que pode ser feito?"

Mestre Wq assentiu. "Você está certo", disse ele. “Vim está quebrado. Vamos consertar isso. Começaremos?"

O antigo mestre do Unix concordou e abriu uma concha. Ele digitou:

$ vi vim.c

Ele começou a codificar. O Mestre Wq assistiu por um tempo e perguntou: “Qual implementação do vi você está usando? Nvi? Vim? Elvis?

"Eu não sei", disse o mestre do Unix. "Não importa."

Mestre Wq assentiu. O mestre do Unix ficou atordoado por um momento e fechou o documento sem salvar.

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.