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

Γρήγορες Πληροφορίες Γενικά, Ημερ. Δημιουργίας ...
Vim
Thumb
Thumb
Στιγμιότυπο της οθόνης του Vim.
Γενικά
Ημερ. Δημιουργίας2 Νοέμβριος 1991
Είδοςεπεξεργαστής κειμένου, ελεύθερο και ανοιχτού κώδικα λογισμικό, εφαρμογή τερματικού, ολοκληρωμένο περιβάλλον ανάπτυξης, υπολογιστική πλατφόρμα
Διανομή
Έκδοση9.1.0 (2 Ιανουάριος 2024)[1][2]
ΛειτουργικάGNU/Linux, BSD, macOS, Microsoft Windows, Android
Ανάπτυξη
Υπευθ. ανάπτυξηςBram Moolenaar
Γραμμένο σεC
Άδεια χρήσηςΓενική Άδεια Δημόσιας Χρήσης GNU
Σύνδεσμοι
Επίσημος ιστότοπος
https://www.vim.org/
Αποθετήριο κώδικα
https://github.com/vim/vim
Κλείσιμο

Είναι διαδεδομένος[4] και αγαπητός[5][6], ιδιαίτερα ανάμεσα σε προγραμματιστές,[7][8][9] που είναι το κοινό στο οποίο απευθύνεται κυρίως, αλλά όχι αποκλειστικά.[10][11][12]

Ιστορία

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

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

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

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

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

Χαρακτηριστικά

O Vim υποστηρίζει μεταξύ άλλων:[25][26]

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

Διεπαφή

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

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

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

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

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

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

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

Vimscript

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

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

Κομμάτι κώδικα από το προεπιλεγμένο σενάριο εκκίνησης του Vim (αρχείο ".vimrc")[40]:

" 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 αναλυτικά
Αριθμός Έκδοσης Ημερομηνία Κοινοποίησης Σημαντικά προστιθέμενα χαρακτηριστικά
1.0[41] Πριν τον Νοέμβριο του 1991 (Μη διαθέσιμο στο κοινό)
  • Αλλαγή της σημασίας του "VIM" σε Vi IMproved.
  • Μεταφορά της βοήθειας σε αρχείο.
  • Αρχεία σεναρίου
  • Έξυπνη παραγραφοποίηση
1.14 2 Νοεμβρίου 1991 Πρώτη έκδοση διαθέσιμη στο κοινό, βελτιστοποίηση του κώδικα.
1.22 Πριν τον Ιανουάριο του 1992 Πρώτη μεταφορά στο λειτουργικό σύστημα Linux.
2.0[42][43] 21 Δεκεμβρίου 1993
  • Η οριζόντια κύλιση
  • Η εμφάνιση λέξεων σε πολλές γραμμές εάν δεν χωράνε οι χαρακτήρες στο παράθυρο (word wrapping ή απλά "wrap" στο Vim)
3.0[44] 16 Αυγούστου 1994 Η δυνατότητα για ύπαρξη πολλαπλών buffer (ρυθμιστές) και παραθύρων.[45]
4.0[46] 21 Μαΐου 1996 Το γραφικό περιβάλλον, γνωστό και ως gVim (διατίθεται συνήθως ως διαφορετικό πρόγραμμα[47][48][49][50]), με την βοήθεια του Robert Webb.
5.0[51] 19 Φεβρουαρίου 1998
  • Ο συντακτικός έλεγχος και επισήμανση.
  • Η εσωτερικευμένη πλέον γλώσσα σεναρίων.
  • Η υποστήριξη των γλωσσών Python και Perl.
6.0[52] 27 Σεπτεμβρίου 2001
  • Η αναδίπλωση κώδικα.
  • Οι επεκτάσεις (plugins).
  • Η δυνατότητα κάθετης διάσπασης της επιφάνειας εργασίας του Vim σε δύο ή παραπάνω υποπαράθυρα.
  • Ο εξερευνητής αρχείων του Vim.
  • Η υποστήριξη πολλαπλών γλωσσών.
  • Η υποστήριξη παλετών χρώματος (color schemes) για το περιβάλλον του Vim.
  • Η δυνατότητα ορισμού διαφορετικών ρυθμίσεων ανάλογα με τον τύπο αρχείου που τροποποιείται.
  • Η δυνατότητα ρύθμισης αυτόματης δημιουργίας και χειρισμού αντιγράφων ασφαλείας των τροποποιούμενων αρχείων (για να αποφεύγονται προβλήματα κατά λάθος αντικατάστασης πληροφοριών).
  • Η λειτουργία Diff, η οποία επιτρέπει τον εύκολο εντοπισμό διαφορών μεταξύ δύο ή περισσότερων αρχείων.
  • Το πρόγραμμα eVim, το οποίο επιτρέπει την χρήση του Vim σαν ένα πρόγραμμα απλού σημειωματάριου (notepad) μέσω κάποιων αλλαγών όπως η χρήση μονάχα μίας λειτουργίας, της Insert, η υποστήριξη της χρήσης του ποντικιού, η αντιγραφή με την "κλασική" συντόμευση CTRL-C.
  • Αυτόματη παραγραφοποίηση με οποιαδήποτε γλώσσα προγραμματισμού.
  • Η τροποποίηση αρχείων μέσω δικτύου (χρήση ftp, scp, rcp, http).
  • Παράθυρο για την χρήση γραμμής εντολών μέσα στον Vim.
  • Η λειτουργία Debugging που επιτρέπει την αναγνώριση σφαλμάτων στον ίδιο τον Vim και τα αρχεία ρυθμίσεών του.
7.0[27][53] 8 Μαΐου 2006
  • Ο ορθογραφικός έλεγχος.
  • Η δυνατότητα δημιουργίας διαφορετικών καρτελών (tabs).
  • Η επέκταση του μηχανισμού αναίρεσης από γραμμική μορφή σε μορφή δέντρου.
  • Η επέκταση της διγραμματικής εισόδου σε πολυγραμματικής μέχρι 6 χαρακτήρες.
  • Η επισήμανση ζευγαριών παρενθέσεων, αγκυλών κτλ.
  • Η εντολή :vimgrepπου επιτρέπει την αναζήτηση μιας λέξης σε μια λίστα αρχείων, χωρίς την χρήση εξωτερικού προγράμματος (χρησιμοποιούνταν το πρόγραμμα grep).
  • Η δυνατότητα ορισμού ενός τελεστή από τον χρήστη.
  • Η δυνατότητα δυναμικού ορισμού ενός χαρακτήρα στο αποτέλεσμα μιας έκφρασης.
8.0[54] 12 Σεπτεμβρίου 2019
  • Η δυνατότητα για ασύγχρονη έξοδο και είσοδο μηνυμάτων με άλλες εφαρμογές.
  • Η δυνατότητα για την δημιουργία και επικοινωνία με μια διεργασία.
  • Η δημιουργία της διαχείρισης των πακέτων από τον ίδιο τον Vim, κάνοντας πολύ πιο απλή την διαδικασία των πρόσθετων (plugins).
  • Περισσότεροι τρόποι για διαγνωστικά τεστ (αφορά προγραμματιστές του Vim).
  • Ο ορισμός ταυτότητας παραθύρου για κάθε υποπαράθυρο του Vim (Μέχρι τώρα μια αναφορά σε υποπαράθυρο γινόταν μονάχα με το νούμερο του).
  • Υποστήριξη DirectX σε Windows.
  • Υποστήριξη GTK 3 (για gVim).
Κλείσιμο

Παραπομπές

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

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.