Vim
Στιγμιότυπο της οθόνης του Vim.
| |
Γενικά | |
---|---|
Ημερ. Δημιουργίας | 2 Νοέμβριος 1991 |
Είδος | επεξεργαστής κειμένου, ελεύθερο και ανοιχτού κώδικα λογισμικό, εφαρμογή τερματικού, ολοκληρωμένο περιβάλλον ανάπτυξης, υπολογιστική πλατφόρμα |
Διανομή | |
Έκδοση | 9.1.0 (2 Ιανουάριος 2024)[1][2] |
Λειτουργικά | GNU/Linux, BSD, macOS, Microsoft Windows, Android, IOS |
Ανάπτυξη | |
Υπευθ. ανάπτυξης | Bram Moolenaar |
Γραμμένο σε | C |
Άδεια χρήσης | Γενική Άδεια Δημόσιας Χρήσης GNU |
Σύνδεσμοι | |
Επίσημος ιστότοπος | |
https://www.vim.org/ | |
Αποθετήριο κώδικα | |
https://github.com/vim/vim |
Ο Vim είναι επεξεργαστής κειμένου που δημιουργήθηκε από τον Bram Moolenaar το 1991, αρχικά για το λειτουργικό σύστημα της Amiga.
Είναι διαδεδομένος[3] και αγαπητός[4][5], ιδιαίτερα ανάμεσα σε προγραμματιστές,[6][7][8] που είναι το κοινό στο οποίο απευθύνεται κυρίως, αλλά όχι αποκλειστικά.[9][10][11]
Ιστορία
[Επεξεργασία | επεξεργασία κώδικα]Ο Vim ξεκίνησε το 1988 με την έκδοση 1.0 (ως ακρωνύμιο του Vi IMitation), ως μια απομίμηση του παλαιότερου επεξεργαστή κειμένου Vi του γνωστού προγραμματιστή Bill Joy (συνιδρυτή της Sun Microsystems[12], δημιουργό του κέλυφους[13]) για το λειτουργικό σύστημα της Commodore Amiga, η οποία ωστόσο δεν εκδόθηκε ποτέ δημοσίως.
Η πρώτη έκδοση που έγινε διαθέσιμη στο κοινό ήταν η 1.14[14] και πραγματοποιήθηκε στις 2 Νοεμβρίου 1991. Η διανομή της γινόταν στη δισκέτα #591[15][16] του προγραμματιστή Fred Fish,[17][18] στην οποία συμπεριλαμβανόταν δωρεάν λογισμικό για το Amiga.
Με την έκδοση 1.22 το 1992 έγινε η πρώτη μεταφορά στο λειτουργικό σύστημα Linux και αλλαγή της έννοιας του ακρωνυμίου σε Vi IMproved.[14]
Ο Bram έχει αναφέρει[19][20][21] αρκετές φορές ότι έμπνευσή του για την δημιουργία του Vim ήταν μια προηγούμενη απομίμηση του Vi, ονόματι Stevie,[22] φτιαγμένος από τον Tim Thompson, αν και στην πορεία ο Vim απέκτησε δική του φιλοσοφία.
Η τελευταία σταθερή έκδοση είναι η 8.2 η οποία εκδόθηκε στις 12 Δεκεμβρίου το 2019[23].
Χαρακτηριστικά
[Επεξεργασία | επεξεργασία κώδικα]O Vim υποστηρίζει μεταξύ άλλων:[24][25]
- Συντακτική Ανάλυση και Επισήμανση
- Αυτόματη παραγραφοποίηση και ευθυγράμμιση κειμένου
- Γρήγορη επεξεργασία κειμένου μέσω μακροεντολών
- Πολύπλοκη επεξεργασία κειμένου με διαδοχικά πατήματα κουμπιών
- Γραφή από δεξιά προς αριστερά (πχ Αραβικά, Εβραϊκά)
- Κείμενα multi-byte (Κινέζικα, Γιαπωνέζικα, Κορεάτικα κλπ).
- Την επιλογή και τη χρήση κειμένου με ορθογώνια μπλοκ κειμένου.
- Συμπλήρωση εντολών.
- Αυτόματες εντολές (π.χ. αυτόματη αποσυμπίεση συμπιεσμένων αρχείων).
- Πολυγραμματική είσοδο[26] (Είσοδος ειδικών χαρακτήρων με έναν συνδυασμό μέχρι 6 χαρακτήρων)
- Ανίχνευση και μετατροπή μεταξύ διαφορετικών μορφών κειμένου
- Προσαρμογή, δημιουργία και επέκταση λειτουργιών από τον χρήστη μέσω του Vim Script[27].
- Εσωτερική χρήση γλώσσας Python και Perl.
- Εξερεύνηση αρχείων.
Διεπαφή
[Επεξεργασία | επεξεργασία κώδικα]Επειδή βασίζεται στον vi, η διεπαφή του Vim βασίζεται σε περιβάλλον επικοινωνίας τερματικού[28] και δεν χρησιμοποιεί μενού ή εικονίδια για την αλληλεπίδραση με τον χρήστη.
Όλες οι εντολές που δίνονται στον Vim από τον χρήστη είναι σε αλφαριθμητική μορφή. Γενικότερα, φιλοσοφία[29] του Vim είναι να είναι δυνατή η αποτελεσματική χρήση του μονάχα με την χρήση του πληκτρολογίου. Μάλιστα, οι συντομεύσεις του είναι δομημένες με τέτοιο τρόπο, ώστε ο χρήστης να μην απομακρύνει τα χέρια του από την σειρά βάσης του πληκτρολογίου[30], δηλαδή την θέση στην οποία:
- Τα ακροδάχτυλα του δεξιού χεριού είναι πάνω στα πλήκτρα "ηξκλ"
- Τα ακροδάχτυλα του αριστερού χεριού είναι πάνω στα πλήκτρα "ασδφ"
Ο Vim είναι ένας από τους λεγόμενους "modal editors" (ελεύθερη μετάφραση: Τροπικός/Λειτουργικός Επεξεργαστής), δηλαδή η χρήση του περιλαμβάνει 4 κύριες λειτουργίες, στις οποίες μπαίνει ανάλογα με τις προθέσεις του χρήστη[24][31].
- Λειτουργία Normal (Κανονική λειτουργία): Σε αυτήν το πληκτρολόγιο δεν εισάγει κείμενο αλλά τα πλήκτρα στέλνουν συντομεύσεις για την επεξεργασία του κειμένου όπως:
- η αντιγραφή μιας γραμμής κειμένου (πλήκτρο "υ"/"y" για "yank"),
- η επικόλληση της (πλήκτρο "π"/"p" για "paste"),
- η αναστροφή αλλαγών (πλήκτρο "Θ"/"u" για undo) κτλ.
- Λειτουργία Insert (Λειτουργία Εισαγωγής): Σε αυτή ο χρήστης εισάγει κείμενο ελεύθερα.
- Λειτουργία Visual (Οπτική Λειτουργία): Σε αυτή ο χρήστης επιλέγει με διάφορες συντομεύσεις (μερικές διαφορετικές από την Κανονική Λειτουργία) ένα τμήμα κειμένου με τα πλήκτρα, ενώ το πληκτρολόγιο πάλι δεν εισάγει κείμενο στο αρχείο.
- Λειτουργία Command-line: Σε αυτή ο χρήστης δεν αλληλεπιδρά άμεσα με το κείμενο όπως προηγουμένως, αλλά εισάγει εντολές σε Vim Script στο κάτω μέρος του παραθύρου. Mε τις εντολές αυτές, επιτυγχάνονται όχι μόνο τροποποιήσεις πάνω στο κείμενο, αλλά και αλλαγές στις ρυθμίσεις του Vim, όπως, μεταξύ πολλών άλλων, η αλλαγή της χρωματικής παλέτας (color scheme) του Vim, η ύπαρξη ή όχι συντακτικής ανάλυσης στο κείμενο κτλ.
Γραφικό περιβάλλον επικοινωνίας διατίθεται συνήθως με άλλα προγράμματα που βασίζονται στον Vim, όπως ο gVim, ο οποίος χρησιμοποιεί μενού και γραμμές εργαλείων για κοινές εργασίες, ωστόσο είναι δυνατή η χρήση όλων των δυνατοτήτων μέσω πληκτρολόγησης εντολών[32].
Ο Vim διαθέτει επίσης εγχειρίδιο για αρχάριους[33], καθώς και ενσωματωμένη βοήθεια σχετικά με εντολές και δυνατότητες, η οποία μπορεί να διαβαστεί είτε μέσα από τον Vim (αν έχουν εγκατασταθεί τα αρχεία βοήθειας) είτε μέσω διαδικτύου[34]. Επιπλέον, πολλά βιβλία έχουν γραφτεί για την εκμάθηση της χρήσης του Vim και του Vim Script[35].
Vimscript
[Επεξεργασία | επεξεργασία κώδικα]Ο Vim είναι βασισμένος στην γλώσσα σεναρίων (scripting language) Vim Script, που ήταν επίσης βασισμένη στην γλώσσα σεναρίων Ex, του Vi[20], γεγονός που είναι εμφανές από την παρόμοια σύνταξή τους.
Όλες οι ρυθμίσεις είναι γραμμένες σε Vim Script[36], δηλαδή σε αρχεία απλού κειμένου, συχνά με την επέκταση .vim
, τα οποία μπορεί ο χρήστης να τροποποιήσει με όποιον τρόπο θέλει, επεκτείνοντας έτσι τον Vim χωρίς να περιορίζεται από τις προκαθορισμένες του ρυθμίσεις. Στην ιστοσελίδα του Vim υπάρχει και τμήμα στο οποίο εγγραμμένοι χρήστες[37] του μπορούν να μοιραστούν σενάρια (scripts) που έχουν γράψει με την υπόλοιπη κοινότητα[38].
Κομμάτι κώδικα από το προεπιλεγμένο σενάριο εκκίνησης του Vim (αρχείο ".vimrc")[39]:
" 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 είναι:
Αριθμός Έκδοσης | Ημερομηνία Κοινοποίησης | Σημαντικά προστιθέμενα χαρακτηριστικά |
---|---|---|
1.0[40] | Πριν τον Νοέμβριο του 1991 (Μη διαθέσιμο στο κοινό) |
|
1.14 | 2 Νοεμβρίου 1991 | Πρώτη έκδοση διαθέσιμη στο κοινό, βελτιστοποίηση του κώδικα. |
1.22 | Πριν τον Ιανουάριο του 1992 | Πρώτη μεταφορά στο λειτουργικό σύστημα Linux. |
2.0[41][42] | 21 Δεκεμβρίου 1993 |
|
3.0[43] | 16 Αυγούστου 1994 | Η δυνατότητα για ύπαρξη πολλαπλών buffer (ρυθμιστές) και παραθύρων.[44] |
4.0[45] | 21 Μαΐου 1996 | Το γραφικό περιβάλλον, γνωστό και ως gVim (διατίθεται συνήθως ως διαφορετικό πρόγραμμα[46][47][48][49]), με την βοήθεια του Robert Webb. |
5.0[50] | 19 Φεβρουαρίου 1998 |
|
6.0[51] | 27 Σεπτεμβρίου 2001 |
|
7.0[26][52] | 8 Μαΐου 2006 |
|
8.0[53] | 12 Σεπτεμβρίου 2019 |
|
Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ «Vim 9.1 is available». 2 Ιανουάριος 2024. Ανακτήθηκε στις 3 Ιανουάριος 2024.
- ↑ «Release v9.1.0». 2 Ιανουάριος 2024. Ανακτήθηκε στις 3 Ιανουάριος 2024.
- ↑ «Vim Creator Champions Charityware: Bram Moolenaar Discusses Developing the Popular Text Editor, How He Uses It, and Version 8». HostingAdvice.com (στα Αγγλικά). 20 Οκτωβρίου 2016. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Best Editor | Linux Journal». www.linuxjournal.com. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Vim documentation: quotes». web.archive.org. 23 Ιουνίου 2017. Αρχειοθετήθηκε από το πρωτότυπο στις 23 Ιουνίου 2017. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Stack Overflow Developer Survey 2015». Stack Overflow. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Stack Overflow Developer Survey 2018». Stack Overflow. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Stack Overflow Developer Survey 2019». Stack Overflow. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ Moolenaar, Bram. «Seven habits of effective text editing» (PDF).
- ↑ Moolenaar, Bram. «Seven habits for effective text editing».
- ↑ «about Vim : vim online». www.vim.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Company Info». web.archive.org. 28 Αυγούστου 2006. Αρχειοθετήθηκε από το πρωτότυπο στις 28 Αυγούστου 2006. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ «The C Shell». alapono.eng.hawaii.edu. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ 14,0 14,1 «vim: the popular text editor». www.free-soft.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Fish disks 1 - 1120». www.amiga-stuff.com. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ «Amiga Fred Fish Disk 591 Public Domain Software». philreichert.org. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ «Richard Fish - Fred Fish will be missed». sourceware.org. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ «Back to the Roots - Fred Fish memorial archive». web.archive.org. 8 Δεκεμβρίου 2013. Αρχειοθετήθηκε από το πρωτότυπο στις 8 Δεκεμβρίου 2013. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ «Linux Software». web.archive.org. 24 Μαΐου 2012. Αρχειοθετήθηκε από το πρωτότυπο στις 24 Μαΐου 2012. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ 20,0 20,1 Moolenaar, Bram (2000). «The continuing story of Vim» (PDF).
- ↑ Moolenaar, Bram. «The Continuing Story of Vim».
- ↑ timthompson.com https://timthompson.com/tjt/stevie/. Ανακτήθηκε στις 8 Οκτωβρίου 2021. Missing or empty
|title=
(βοήθεια) - ↑ «Release v8.2.0 · vim/vim». GitHub (στα Αγγλικά). Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ 24,0 24,1 Τζένος, Δημήτρης (11 Μαρτίου 2001). «Εξήγηση του Vim σε 6 kilobytes».
- ↑ Sven, Guckes (12 Μαρτίου 2001). «Vim explained in 6 kilobytes».
- ↑ 26,0 26,1 «Vim: version7.txt». vimhelp.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Vim documentation: Scripting». vimdoc.sourceforge.net. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ Φυσικά, εδώ εννοείται ότι πλέον, που η χρήση των τερματικών δεν είναι εκτεταμένη, ο Vim χρησιμοποιήται σε γραφικά περιβάλλοντα μέσω ενός προγράμματος απομίμησης τερματικού (terminal emulator)
- ↑ «Editors (Vim)». the missing semester of your cs education (στα Αγγλικά). Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ Feit, Anna Maria; Weir, Daryl; Oulasvirta, Antti (2016-05-07). «How We Type: Movement Strategies and Performance in Everyday Typing» (στα αγγλικά). Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems (San Jose California USA: ACM): 4262–4273. doi: . ISBN 978-1-4503-3362-7. https://dl.acm.org/doi/10.1145/2858036.2858233.
- ↑ «Vim documentation: intro». vimdoc.sourceforge.net. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Vim documentation: gui». vimdoc.sourceforge.net. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ PierceK., Michael C.· Ware, Robert. Moolinaar, Bram, επιμ. «Vim Tutor - Εγχειρίδιο Vim για αρχάριους». www2.geog.ucl.ac.uk (1.8 έκδοση). Αρχειοθετήθηκε από το πρωτότυπο στις 7 Σεπτεμβρίου 2021. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Vim: help.txt». vimhelp.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «ICCF Holland - Vim books». iccf-holland.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Write a Vim script». vim.help. Αρχειοθετήθηκε από το πρωτότυπο στις 10 Οκτωβρίου 2021. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ «create an account : vim online». www.vim.org. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ «scripts : vim online». www.vim.org. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ vim/vim, Vim - Default .vimrc file, 2021-10-13, https://github.com/vim/vim/blob/3be69bf539f3026369d20f1667e53d390d386a9f/runtime/defaults.vim, ανακτήθηκε στις 2021-10-13
- ↑ vim/vim-history, Vim - the text editor, 2021-09-26, https://github.com/vim/vim-history/blob/9056831754099bcc56e9929e0df25b3d14d9faf6/src/version.c, ανακτήθηκε στις 2021-10-13
- ↑ vim/vim-history, Vim - the text editor, 2021-10-13, https://github.com/vim/vim-history/blob/9056831754099bcc56e9929e0df25b3d14d9faf6/README2.0, ανακτήθηκε στις 2021-10-13
- ↑ «Vim 2.0 available». groups.google.com. Ανακτήθηκε στις 13 Οκτωβρίου 2021.
- ↑ vim/vim-history, Vim - the text editor - Version 3.0, 2021-10-13, https://github.com/vim/vim-history/blob/81d8b473260b31ea465268f9463b8cbf61c329d4/src/version.c, ανακτήθηκε στις 2021-10-13
- ↑ «Vim 3.0 now available». groups.google.com. Ανακτήθηκε στις 13 Οκτωβρίου 2021.
- ↑ «Vim: version4.txt». vimhelp.org. Ανακτήθηκε στις 10 Οκτωβρίου 2021.
- ↑ «Ubuntu – Details of package gvim in bionic». packages.ubuntu.com. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Arch Linux - gvim 8.2.3441-1 (x86_64)». archlinux.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Debian -- Details of package gvim in stretch». packages.debian.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «gVim package on Windows Unix and MacOS». www.vim.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Vim: version5.txt». vimhelp.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Vim: version6.txt». vimhelp.org. Ανακτήθηκε στις 8 Οκτωβρίου 2021.
- ↑ «Release v7.0 · vim/vim». GitHub (στα Αγγλικά). Ανακτήθηκε στις 13 Οκτωβρίου 2021.
- ↑ «Vim: version8.txt». vimhelp.org. Ανακτήθηκε στις 13 Οκτωβρίου 2021.
Εξωτερικοί σύνδεσμοι
[Επεξεργασία | επεξεργασία κώδικα]- Κύρια σελίδα του Vim(Αγγλικά)
- Σελίδα της Φιλανθρωπικής οργάνωσης ICCF-Holland (Αγγλικά)