Vim

Ο **Vim** είναι επεξεργαστής κειμένου που δημιουργήθηκε από τον Bram Moolenaar το 1991, αρχικά για το λειτουργικό σύστημα της Amiga.

Είναι διαδεδομένος και αγαπητός, ιδιαίτερα ανάμεσα σε προγραμματιστές, που είναι το κοινό στο οποίο απευθύνεται κυρίως, αλλά όχι αποκλειστικά. 

## Ιστορία

Ο Vim ξεκίνησε το 1988 με την έκδοση 1.0 (ως ακρωνύμιο του **Vi IMitation**), ως μια απομίμηση του παλαιότερου επεξεργαστή κειμένου Vi του γνωστού προγραμματιστή Bill Joy (συνιδρυτή της Sun Microsystems, δημιουργό του κέλυφους) για το λειτουργικό σύστημα της Commodore Amiga, η οποία ωστόσο δεν εκδόθηκε ποτέ δημοσίως.

Η πρώτη έκδοση που έγινε διαθέσιμη στο κοινό ήταν η 1.14 και πραγματοποιήθηκε στις 2 Νοεμβρίου 1991. Η διανομή της γινόταν στη δισκέτα #591 του προγραμματιστή Fred Fish, στην οποία συμπεριλαμβανόταν δωρεάν λογισμικό για το Amiga. 

Με την έκδοση 1.22 το 1992 έγινε η πρώτη μεταφορά στο λειτουργικό σύστημα Linux και αλλαγή της έννοιας του ακρωνυμίου σε **Vi IMproved**.

Ο Bram έχει αναφέρει αρκετές φορές ότι έμπνευσή του για την δημιουργία του Vim ήταν μια προηγούμενη απομίμηση του Vi, ονόματι Stevie, φτιαγμένος από τον Tim Thompson, αν και στην πορεία ο Vim απέκτησε δική του φιλοσοφία.

Η τελευταία σταθερή έκδοση είναι η 8.2 η οποία εκδόθηκε στις 12 Δεκεμβρίου το 2019.

## Χαρακτηριστικά
O Vim υποστηρίζει μεταξύ άλλων:

* Συντακτική Ανάλυση και Επισήμανση
* Αυτόματη παραγραφοποίηση και ευθυγράμμιση κειμένου
* Γρήγορη επεξεργασία κειμένου μέσω μακροεντολών
* Πολύπλοκη επεξεργασία κειμένου με διαδοχικά πατήματα  κουμπιών
* Γραφή από δεξιά προς αριστερά (πχ Αραβικά, Εβραϊκά)
* Κείμενα multi-byte (Κινέζικα, Ιαπωνικά, Κορεάτικα κλπ). 
* Την επιλογή και τη χρήση κειμένου με ορθογώνια μπλοκ κειμένου.
* Συμπλήρωση εντολών.
* Αυτόματες εντολές (π.χ. αυτόματη αποσυμπίεση συμπιεσμένων αρχείων).
* Πολυγραμματική είσοδο (Είσοδος ειδικών χαρακτήρων με έναν συνδυασμό μέχρι 6 χαρακτήρων)
* Ανίχνευση και μετατροπή μεταξύ διαφορετικών μορφών κειμένου
* Προσαρμογή, δημιουργία και επέκταση λειτουργιών από τον χρήστη μέσω του Vim Script.
*Εσωτερική χρήση γλώσσας Python και Perl.
*Εξερεύνηση αρχείων.

## Διεπαφή

Επειδή βασίζεται στον vi, η διεπαφή του Vim βασίζεται σε περιβάλλον επικοινωνίας τερματικού και δεν χρησιμοποιεί μενού ή εικονίδια για την αλληλεπίδραση με τον χρήστη.

Όλες οι εντολές που δίνονται στον Vim από τον χρήστη είναι σε αλφαριθμητική μορφή. Γενικότερα, φιλοσοφία του Vim είναι να είναι δυνατή η αποτελεσματική χρήση του μονάχα με την χρήση του πληκτρολογίου. Μάλιστα, οι συντομεύσεις του είναι δομημένες με τέτοιο τρόπο, ώστε ο χρήστης να μην απομακρύνει τα χέρια του από την σειρά βάσης του πληκτρολογίου, δηλαδή την θέση στην οποία:

* Τα ακροδάχτυλα του δεξιού χεριού είναι πάνω στα πλήκτρα "*ηξκλ*"
* Τα ακροδάχτυλα του αριστερού χεριού είναι πάνω στα πλήκτρα "*ασδφ*"

Ο Vim είναι ένας από τους λεγόμενους "modal editors" (ελεύθερη μετάφραση: Τροπικός/Λειτουργικός Επεξεργαστής), δηλαδή η χρήση του περιλαμβάνει 4 κύριες λειτουργίες, στις οποίες μπαίνει ανάλογα με τις προθέσεις του χρήστη.

* Λειτουργία **Normal** (Κανονική λειτουργία): Σε αυτήν το πληκτρολόγιο δεν εισάγει κείμενο αλλά τα πλήκτρα στέλνουν συντομεύσεις για την επεξεργασία του κειμένου όπως: 
** η αντιγραφή μιας γραμμής κειμένου (πλήκτρο "υ"/"y" για "yank"),
** η επικόλληση της (πλήκτρο "π"/"p" για "paste"),
** η αναστροφή αλλαγών (πλήκτρο "Θ"/"u" για undo) κτλ.
* Λειτουργία **Insert** (Λειτουργία Εισαγωγής): Σε αυτή ο χρήστης εισάγει κείμενο ελεύθερα.
* Λειτουργία **Visual** (Οπτική Λειτουργία): Σε αυτή ο χρήστης επιλέγει με διάφορες συντομεύσεις (μερικές διαφορετικές από την *Κανονική Λειτουργία)* ένα τμήμα κειμένου με τα πλήκτρα, ενώ το πληκτρολόγιο πάλι δεν εισάγει κείμενο στο αρχείο.
* Λειτουργία **Command-line**: Σε αυτή ο χρήστης δεν αλληλεπιδρά άμεσα με το κείμενο όπως προηγουμένως, αλλά εισάγει εντολές σε Vim Script στο κάτω μέρος του παραθύρου. Mε τις εντολές αυτές, επιτυγχάνονται όχι μόνο τροποποιήσεις πάνω στο κείμενο, αλλά και αλλαγές στις ρυθμίσεις του Vim, όπως, μεταξύ πολλών άλλων, η αλλαγή της χρωματικής παλέτας (color scheme) του Vim, η ύπαρξη ή όχι συντακτικής ανάλυσης στο κείμενο κτλ.

Γραφικό περιβάλλον επικοινωνίας διατίθεται συνήθως με άλλα προγράμματα που βασίζονται στον Vim, όπως ο **gVim**, ο οποίος χρησιμοποιεί μενού και γραμμές εργαλείων για κοινές εργασίες, ωστόσο είναι δυνατή η χρήση όλων των δυνατοτήτων μέσω πληκτρολόγησης εντολών.

Ο Vim διαθέτει επίσης εγχειρίδιο για αρχάριους, καθώς και ενσωματωμένη βοήθεια σχετικά με εντολές και δυνατότητες, η οποία μπορεί να διαβαστεί είτε μέσα από τον Vim (αν έχουν εγκατασταθεί τα αρχεία βοήθειας) είτε μέσω διαδικτύου. Επιπλέον, πολλά βιβλία έχουν γραφτεί για την εκμάθηση της χρήσης του Vim και του Vim Script.

## Vimscript
Ο Vim είναι βασισμένος στην γλώσσα σεναρίων (scripting language) **Vim Script**, που ήταν επίσης βασισμένη στην γλώσσα σεναρίων Ex, του Vi, γεγονός που είναι εμφανές από την παρόμοια σύνταξή τους.

Όλες οι ρυθμίσεις είναι γραμμένες σε Vim Script, δηλαδή σε αρχεία απλού κειμένου, συχνά με την επέκταση `.vim`, τα οποία μπορεί ο χρήστης να τροποποιήσει με όποιον τρόπο θέλει, επεκτείνοντας έτσι τον Vim χωρίς να περιορίζεται από τις προκαθορισμένες του ρυθμίσεις. Στην ιστοσελίδα του Vim υπάρχει και τμήμα στο οποίο εγγραμμένοι χρήστες του μπορούν να μοιραστούν σενάρια (scripts) που έχουν γράψει με την υπόλοιπη κοινότητα.  

Κομμάτι κώδικα από το προεπιλεγμένο σενάριο εκκίνησης του Vim (αρχείο ".vimrc"):  
```vim
" Don't use Ex mode, use Q for formatting.
" Revert with ":unmap Q".
map Q gq

" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
" Revert with ":iunmap <C-U>".
inoremap <C-U> <C-G>u<C-U>

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
" Only xterm can grab the mouse events when using the shift key, for other
" terminals use ":", select text and press Esc.
if has('mouse')
  if &term =~ 'xterm'
    set mouse=a
  else
    set mouse=nvi
  endif
endif
```


## Αναλυτικά η Ιστορία Εκδόσεων
Η ιστορία του Vim όσων αναφορά τα βασικότερα χαρακτηριστικά που προστέθηκαν σε αυτόν μετά την μεταφορά στο Unix είναι:

## Παραπομπές


## Εξωτερικοί σύνδεσμοι

* Κύρια σελίδα του Vim
* Σελίδα της Φιλανθρωπικής οργάνωσης ICCF-Holland 

Κατηγορία:Επεξεργαστές κειμένου
Κατηγορία:Επεξεργαστές πηγαίου κώδικα
Κατηγορία:Ελεύθερο λογισμικό
Κατηγορία:Λογισμικό Unix