VIM / VI unterschied?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Unterschied bei dem Texteditor vi / vim

frage dein System: probiere mal das Folgende (im Terminal oder an der Konsole):

which vim

ergibt bei mir: /usr/bin/vim

which vi

ergibt bei mir: /usr/bin/vi

Weiter:

ls -l /usr/bin/vim
/usr/bin/vim -> /etc/alternatives/vim

und

ls -l /usr/bin/vi
/usr/bin/vi -> /etc/alternatives/vi

.und weiter aufgedröselt:

ls -l /etc/alternatives/vim
/etc/alternatives/vim -> /usr/bin/vim.gtk

und

ls -l /etc/alternatives/vi
/etc/alternatives/vi -> /usr/bin/vim.gtk

also letztendlich kein Unterschied!

file /usr/bin/vim.gtk

liefert

/usr/bin/vim.gtk: ELF 64-bit LSB executable, x86-64, ...

Beide sind nicht grafische Editoren, werden also nur mit der Tastatur bedient. Davon unbenommen ist aber -- wohl meist im grafischen System -- die Möglichkeit, Text mit der Maus zu markieren ... und einzufügen. Die Postion muß man aber erst über die Cursortasten ansteuern.

Da man auch in der schwarzen Konsole (Alt F1) die Maus aktivieren kann, geht das natürlich auch dort.

Etwas anderes ist es mit dem gvim:

Analog dem o.g. Vorgehen erhalte ich:

/usr/bin/vim.gtk: ELF 64-bit LSB executable, x86-64, ...

also wird eigentlich die gleiche Datei ausgeführt ... aber offensichtlich wird die Umgebung abgefragt ... in der Konsole mault 'gvim', das er kein Display hat ... er schaltet dann um in die reine Text-Version ... und macht halt weiter!

Woher ich das weiß:eigene Erfahrung – Intensive Beschäftigung hiermit seit etlichen Jahren

worin die Änderungen von vim gegenüber vi bestehen, weiß ich nicht.
Der Binärcode beider Editoren ist (auf meinem PC) aber identisch, denn da ist vi ein symbolischer auf vim.

Die Frage ist nun, wie kann es bei gleichem Code Unterschiede geben.

Beim Aufruf von vi oder vim können dem Programm Parameter, wie der Name der zu bearbeitenden Datei übergeben werden. Zu den übergebenen Parametern gehört aber auch der Programm-Name.
Das Programm selbst kann dann natürlich erkennen, mit welchem Namen es aufgerufen wurde. Somit kann der Programmierer entscheiden, ob er Funktionen von vim oder vi ausführt. Da das in einem Programm passiert, lassen sich Programmteile natürlich in "beiden Programmen" benutzen, ohne mehrfach vorhanden sein zu müssen.
Bei zwei unabhängigen Programmen hätte der gesamte Code auch doppelt vorhanden sein müssen (Bibliotheken mal nicht betrachtet).

Solche Methoden gibt es nicht nur bei vi und vim

vi ist übrigens ein Werkzeug, das aus der Anfangszeit von Unix stammt. Damals gab es praktisch nur Schreibmaschinen oder Fernschreiber als Ein-Ausgabegeräte. Viele Funktionen sind darauf abgestimmt und heute eigentlich veraltet. Ich benutze vi nur dann, wenn gar nichts mehr geht.

Für den "täglichen Gebrauch" verwende ich joe , der sowohl in einem Grafik-Terminal ( xterm), als auch auf der Konsole ( nur alpha-numerisch) benutzt werden kann.

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

VI ist Standard-Texteditor unter Unix (HP-UX, AIX, Sun-OS usw.)

GNU hat es um viele Funktionen erweitert. (VIM, GVIM).

Falls du es auf VI links, funktioniert VIM im traditionellen als VI.