Vi vs vim, of, is er een reden waarom ik ooit vi zou willen gebruiken?

Ik weet een beetje over * NIX-teksteditors (momenteel migreert van nano naar vim), en, na wat rondgekeken te hebben op de Unix & Linux SE, hebben gemerkt dat vi wordt gebruikt in plaats van “vim” in een behoorlijk aantal vragen. Ik weet dat “vim” staat voor “Vi IMproved”, en met dat in gedachten vraag ik me af waarom iemand liever vi gebruikt in plaats van vim. Heeft vi een significant voordeel ten opzichte van vim?

Bewerken: ik denk dat mijn vraag verkeerd wordt geïnterpreteerd. Ik weet dat vim voor het grootste deel aanzienlijk krachtiger en feature-completer is dan vi. Wat ik wil weten is of er mogelijke gevallen zijn waarin vi een voordeel heeft ten opzichte van vim, zoals minder geheugengebruik, prevalentie op * nix-systemen, enz.

Opmerkingen

  • Het leuke van vi is dat je kunt verwachten dat het op elk POSIX-compatibel systeem staat.
  • Eigenlijk omvat de Ubuntu-standaardinstallatie vi en niet vim .. Ubuntu is trouwens een van de meest gebruiksvriendelijke distro 😉
  • @amyassin Dit onjuist is, bevat Ubuntu, zoals de meeste Linux-distributies, vim. vi is slechts een symbolische link die uiteindelijk verwijst naar vim in de standaardinstallatie.
  • Mijn advies is: gebruik Vim, maar leer vi met behulp van de POSIX-specificaties voor vi . Op die manier heb je kennis van draagbare en ken je Vim-extensies.
  • @DDK Je hebt ” uiteindelijk in mijn verklaring. ” ls -l / etc / alternative / vi ” – > ” lrwxrwxrwx 1 root root 17 janv. 1 2016 / etc / alternative / vi – > /usr/bin/vim.tiny”

Antwoord

vi is (ook) een POSIX-standaardeditor . Er zijn tal van implementaties en vim is waarschijnlijk de meest populaire.

Hoewel veel traditionele Unix-compatibele besturingssystemen vi implementaties die zeer dicht bij de standaard liggen, vim heeft veel extra functies toegevoegd die het een tweesnijdend zwaard maken.

Natuurlijk zijn deze extensies meestal ontworpen om het bewerkingsproces te vergemakkelijken en handige functies en functionaliteiten te bieden. Als u echter eenmaal aan sommige ervan gewend bent (niet de cosmetische zoals syntaxiskleuring, maar die welke het gedrag van de editor veranderen), kunt u gemakkelijk vergeten dat ze specifiek zijn; en een andere implementatie gebruiken, inclusief degene die zijn gebaseerd op de originele BSD code kan erg frustrerend zijn. Het tegenovergestelde is ook waar.

Dit lijkt veel op het probleem dat optreedt met scripts die niet-POSIX-bashismen gebruiken waarmee meer orthodoxe shell-implementaties zoals dash of ksh.

Antwoord

Geen vi heeft geen elk significant voordeel ten opzichte van vim is eerder andersom. Vim heeft meer voordelen dan Vi. U bent wellicht geïnteresseerd in: Waarom, oh WAAROM, doen die #? @! nutheads gebruiken vi?

Bewerken, lees ook: Is het leren van VIM de moeite waard?

Reacties

  • Ja. Ik gebruik geen ‘ IDE omdat de editors die ze je dwingen te gebruiken, niet ‘ t Vim is.
  • @Keith Ik gebruik zowel Xcode als Eclipse en ik ‘ kan nog steeds bewerken met alleen vi.
  • @Keith SlickEdit heeft een geweldige Vim-emulatie en IDEA ‘ s komt er dichtbij. Visual Studio heeft ook ViEmu.
  • IntellIJ heeft ook een mooie vim-plug-in die het gedrag van de standaardeditor ‘ s gedrag.

Answer

Nadat ik een groot deel van mijn leven (mijn kindertijd niet meegerekend) comfortabel met Vim heb bewerkt, heb ik ongeveer een maand alleen vi gebruikt. Daarbij realiseerde ik me dat ik afhankelijk was van Vim voor al mijn behoeften op het gebied van tekstaanpassing. Voorafgaand aan mijn trip met vi, wanneer ik wat tekst moest vervangen of een soortgelijke bewerking in een grote groep bestanden moest uitvoeren, zou ik de bestanden gewoon openen in Vim en een :bufdo commando uitvoeren , en telkens als ik sommige bestanden moest laten inspringen of formatteren, zou ik ze openen in Vim en Vim “s = en gw commandos gebruiken Ik was afhankelijk van Vim.Nadat ik me realiseerde dat vi deze opdrachten niet had, werd ik gedwongen om bulk-teksttransformaties uit te voeren met sed en leerde ik veel over andere programmas zoals awk en indent. Hoewel ik uiteindelijk terug ben gegaan naar het gebruik van Vim, was de kennis die ik opdeed door een minder functionele editor te gebruiken aanzienlijk en bleek buitengewoon nuttig te zijn. Naast het leren over tools buiten een teksteditor, heb ik ook beter kennis gemaakt met vi. Wanneer ik aan een nieuw systeem of een server werk die geen Vim heeft, voel ik me veel comfortabeler met vi dan voor mijn maandlange excursie.

Ook heb ik vorige maand Linux geïnstalleerd op een goedkope WM8650-tablet en ontdekte dat er een merkbaar prestatieverschil is tussen Vim en vi, dus ik gebruik meestal vi op de tablet.

Opmerkingen

  • Ik vind dat dit een veelvoorkomend probleem is in IT: de tools die ons helpen, kunnen ook dingen verbergen die we ‘ beter zouden kunnen leren.
  • Eigenlijk kunnen we in-place bestandsbewerking op veel bestanden kan ‘ t draagbaar worden gedaan met Awk of Sed ofwel . (De -i beide inschakelen is een GNU-extensie.) Maar je kunt ze draagbaar gebruiken met iets als for f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done

Answer

Ik zou het moeilijk hebben om zonder vim te leven, maar ik kan “vi niet uitstaan . Het leren van het eerste zal je echter in ieder geval een idee geven van hoe je met het laatste moet omgaan als dat alles is wat beschikbaar is.

De vim-interface is standaard eigenlijk vrij dicht bij vi. Als ik “Ik werk aan een systeem met vim, het eerste wat ik doe is dit spul toevoegen aan ~/.vimrc:

syntax enable set nocp set wildmenu 

Er “een heleboel andere dingen waar ik de voorkeur aan geef – nowrap en nummering ingeschakeld, enz. – maar het maakt niet uit.” Syntax enable “schakelt gewoon de basissyntaxisaccentuering in (wat krachtiger: filetype plugin on is ook fundamenteel); “nocp” schakelt vi-compatibiliteit uit en dit is dat vim begint te onderscheiden van je oude vi (bijv. , het maakt showmode mogelijk, wat de hele ervaring wat menselijker maakt, aangezien je nu een idee hebt of je de commando- of ~ INSERT ~ -modus hebt). “wildmenu” geeft je gewoon een horizontaal aanvulmenu bij het doen van sommige dingen, wat het leven ook gemakkelijker maakt.

De tekstbewerkingsmogelijkheden van vim zijn ongeëvenaard – behalve emacs heb ik nog nooit een stukje software gezien of gehoord dat in de buurt komt. Ze zijn niet gemakkelijk te leren, maar als je ze eenmaal kent, zijn ze veel sneller te gebruiken dan muismenus en veel dynamischer dan de eenvoudige macro-key-alternatieven in op muismenus gebaseerde interfaces. Voor programmeren gebruik ik soms vim naast een IDE zoals Eclipse, maar ik doe het meeste werk in vim.

Als je dat pad volgt, lol, kijk dan naar de plug-ins voor automatisch aanvullen en taglijst. En pas op voor de donkere kant.

Reacties

  • Ik voeg ook altijd set mouse=a toe.
  • Wat betreft je programmering opmerking, misschien vind je eclim interessant …
  • @ire_and_curses: haven ‘ t ik heb het geprobeerd. Eclipse en vim monitoren beide de bronbestanden en staan toe dat ze extern worden bijgewerkt, en flippen van het ene bureaublad naar het andere is flippen van het ene bureaublad naar het andere. Het lijkt nogal een idee.
  • Hoewel ik niet denk dat ‘ dit antwoord het gekozen antwoord zou moeten zijn (aangezien het ‘ s bevooroordeeld), is het ‘ precies het type perspectief dat nuttig is om de verschillen te begrijpen. Bedankt voor uw standpunt.

Answer

Het voordeel is dat vi meestal vooraf is geïnstalleerd in enterprise UNIX zoals AIX of Solaris. Bovendien is vim niet toegankelijk op installatiemedia.

Answer

Dit is een uittreksel uit Vim Koans :

Master Wq en de Unix-master

Een oude Unix-master kwam naar Master Wq. Ik heb problemen, Wq. Je leert de weg van Vim. vi is heilig maar Vim is het niet; zijn code breidt zich uit, zijn kenmerken menigte geheugen; zijn binaire bestanden zijn enorm, zijn gedrag inconsistent. Dit is niet de manier van Unix. Ik vrees dat u uw studenten misleidt. Wat kan er worden gedaan? ”

Master Wq knikte. “Je hebt gelijk,” zei hij. Vim is kapot. Laten we het oplossen. Zullen we beginnen? ”

De oude Unix-master ging akkoord en opende een shell. Hij typte:

$ vi vim.c 

Hij begon te coderen. Master Wq keek een tijdje toe en vroeg hem toen: “Welke implementatie van vi gebruik je? Nvi? Vim? Elvis? “

” Ik weet het niet, “zei de Unix-meester. “Het maakt niet uit.”

Meester Wq knikte. De Unix-meester bleef even stomverbaasd zitten en sloot zijn document niet opgeslagen.

Reacties

  • hahah … het is grappig voor mij …. diep maar grappig.Bedankt voor het delen.

Answer

Zoals eerdere antwoorden al hebben vermeld, komt vi met zowat elk UNIX-systeem daarbuiten.

Ik wilde alleen een voorbeeld toevoegen. Arch Linux is een bijzonder populaire en lichtgewicht distro die noch het installatieprogramma, noch de basisdistro standaard met vim bevat, maar beide met vi.

Dit is op zich geen voordeel voor vi / em>, omdat je vim eenvoudig handmatig kunt installeren, en er is weinig dat je hoeft te bereiken in de installatie waarvoor een teksteditor nodig is, en niets waar vim superieur is aan vi voor het beoogde doel. Maar het verschil begrijpen en dat vi is alomtegenwoordiger en lichter dan vim geeft het een aantal nichevoordelen.

Om alles te omvatten, heeft nog niemand expliciet opgemerkt dat vi een directe voorloper is van vim. Vim is specifiek ontworpen om alles te zijn dat was vi, en meer.

Dus op een heel directe manier is vim superieur aan vi, omdat het is ontworpen om te zijn.

Answer

De enige reden om vi ooit over vim te gebruiken, is wanneer je geen andere keus hebt.

Er zijn heel veel redenen waarom vim staat voor r “vi verbeterd”!

Lenen van een gerelateerd bericht antwoordde ik: –

  1. Meerdere vensters – horizontaal, verticaal & tabs.
  2. Visuele markering.
  3. Online hulp via de opdracht: help.
  4. Macros opnemen in een register dat u vervolgens kunt uitvoeren.
  5. Meerdere keren ongedaan maken (en opnieuw uitvoeren), in plaats van de krankzinnige schakelaar voor ongedaan maken van oude vi.
  6. Opdrachtregelgeschiedenis, zoekgeschiedenis.
  7. Een volledige taal ingebed, samen met een groot aantal beschikbare functies, bijv. getcwd ()
  8. Sterk uitgebreide patroonovereenkomst.
  9. Woordaanvulling via ctrl-P & ctrl-N.
  10. Een ingebouwde bestandsnavigator (een beetje onhandig, maar kan handig zijn).
  11. De ESC-toets sluit in feite opdrachten af waaraan je probeerde te ontsnappen in plaats van ze (waanzinnig) uit te voeren zoals vi doet.
  12. Mogelijkheid om opdrachten uit te voeren op alle buffers, args of vensters via bufdo, argdo & windo.

Opmerkingen

  • U had waarschijnlijk de ” vele, vele ” redenen kunnen overbrengen die u noemde in unix.stackexchange.com/a/425597/85039 antwoord hier. Dat ‘ dit antwoord een beetje beter zou maken; anders leest het meer als een opmerking dan als een echt antwoord.
  • Punt genomen. Antwoord bijgewerkt, ontleend aan een gerelateerd antwoord dat ik gisteren heb gegeven.

Answer

Ik heb gemerkt dat ik alleen kies Vi boven VIM wanneer Ik kopieer en plak een tekstdocument of configuratiebestand dat ik heb gebruikt cat commando. Dit komt doordat wanneer ik probeer ctrl-c en vervolgens ctrl-v naar het VIM geopende document het dwingt alle regels om een opmerking voor zich te hebben. Dus als ik Vi tot ctrl-v of paste gebruik in de Vi geopende document, het plakt precies waaruit ik heb gekopieerd. Anders dan dat, gebruik ik VIM de hele dag.

Veel plezier!

Reacties

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *