Μετάβαση στο περιεχόμενο

Χρήση Neovim

Περιγραφή

Το Neovim ή αλλιώς Nvim είναι ένας επεξεργαστής κειμένου (Text Editor) που εκτελείται από το τερματικό. Το γεγονός πως εκτελείται στο τερματικό, χωρίς διεπαφή χρήστη, το καθιστά εξαιρετικά γρήγορο και αποτελεσματικό. Εμπίπτει στην κατηγορία των Personalized Development Environment (PDE), σε αντίθεση με άλλα διαδεδομένα Integrated Development Environments (IDE) όπως το VSCode, IntelliJ κτλ. Δηλαδή επιτρέπει στον χρήστη να παραμετροποιήσει στον απόλυτο βαθμό τις συντομεύσεις πληκτρολογίου (Keybinds), το περιβάλλον εργασίας και τις επεκτάσεις (plugins) που χρησιμοποιεί. Είναι βασισμένος στον επεξεργαστή κειμένου Vim (Vi Improved), ο οποίος με τη σειρά του βασίζεται στο Vi, προσθέτοντας όμως πολλές νέες λειτουργικότητες.

Εγκατάσταση του Neovim

Για να εγκαταστήσετε το Neovim, μεταβείτε εδώ, όπου υπάρχουν οδηγίες εγκατάστασης αναλόγως με το λειτουργικό σύστημα που χρησιμοποιείτε.

Χρήση

Στο Neovim, υπάρχουν διαφορετικές λειτουργίες (Modes) για τη διαχείριση ενός αρχείου. Τα πιο συνηθισμένα Modes είναι Normal mode (ξεκινάτε σε αυτό το mode όταν ανοίγετε το Neovim), Insert mode, Visual mode και Command-Line mode.

Normal mode

Αυτό το mode επιτρέπει στο χρήστη να περιηγείται στο αρχείο του, να κάνει αντιγραφή/επικόλληση κειμένου, να διαγράφει κομμάτια κειμένου, να κάνει undo προηγούμενων αλλαγών και γενικότερα να εκτελεί οποιαδήποτε εντολή θέλει για επεξεργασία κειμένου. Η περιήγηση μπορεί να γίνει είτε με τα βελάκια είτε με τον παραδοσιακό τρόπο, στον οποίο οφείλεται και η ταχύτητα εκτέλεσης ενεργειών, δηλαδή πατώντας το πλήκτρο h για αριστερά, το πλήκτρο j για κάτω, το πλήκτρο k για πάνω και το πλήκτρο l για δεξιά.

Insert mode

Για την εισαγωγή κειμένου χρησιμοποιείται αυτό το mode στο οποίο για να εισέλθει ο χρήστης πρέπει ενώ βρίσκεται σε Normal mode να πατήσει το πλήκτρο i. Έπειτα από αυτό, το Neovim συμπεριφέρεται όπως ένας απλός text editor με τον οποίον γράφουμε σε ένα αρχείο. Για να εξέλθει κάποιος από το Insert mode και να πάει στο Normal mode το κάνει πατώντας το πλήκτρο Esc ή το συνδυασμό Ctrl+C.

Visual mode

Αυτό το mode δίνει τη δυνατότητα επιλογής και επεξεργασίας τμημάτων του κειμένου. Η ενεργοποίηση αυτού του mode γίνεται πατώντας το πλήκτρο v ή το V. Αν ο χρήστης εισέλθει σε αυτό το mode με v, τότε το Neovim επιλέγει αυτόν τον χαρακτήρα και με τα πλήκτρα περιήγησης, μπορεί να επιλέξει λέξεις ή και προτάσεις. Αν εισέλθει πατώντας το V τότε αυτόματα επιλέγεται η γραμμή στην οποία βρίσκεται ο χρήστης και μπορεί πάλι με τα πλήκτρα περιήγησης να επιλέξει και άλλες γραμμές του κειμένου, αλλά όχι μεμονωμένες λέξεις. Για να εξέλθει κάποιος από το Visual mode και να πάει στο Normal mode το κάνει πατώντας το πλήκτρο Esc ή το συνδυασμό Ctrl+C.

Command-line Mode

Μέσω του command-line mode ο χρήστης εκτελεί εντολές επεξεργασίας για το αρχείο το οποίο επεξεργάζεται. Για να χρησιμοποιήσει αυτό το mode πρέπει να πατήσει το :, να γράψει την εντολή που επιθυμεί, και στη συνέχεια να πατήσει Enter. Για παράδειγμα η εντολή :%s/<Old text>/<New text>/g, αλλάζει τα περιεχόμενα του <Old text> με τα καινούρια <New text>. Επιπρόσθετα, μπορεί να τρέξει εντολές στο terminal, γράφοντας :! <command>, όπως για παράδειγμα :!ls ή :!grep -r "search_term" /path/to/search. Για να εξέλθει κάποιος από το Command-line mode και να πάει στο Normal mode το κάνει πατώντας το πλήκτρο Esc ή το συνδυασμό Ctrl+C.

Αποθήκευση και έξοδος από το Neovim

Για να βγει κάποιος από το περιβάλλον του Neovim, πρέπει να πληκτρολογήσει το :q (quit). Η αποθήκευση των αλλαγών στο αρχείο γίνεται με το :w (write) ενώ αν θέλει να αποθηκεύσει τις αλλαγές και να βγει από το αρχείο, αυτό γίνεται μέσω του :wq (write quit). Αν ο χρήστης επιχειρήσει να εξέλθει από το αρχείο χωρίς να αποθηκεύσει τις αλλαγές που έχει κάνει, η εντολή :q θα αποτύχει. Στην περίπτωση αυτή πρέπει να χρησιμοποιήσει την εντολή :q! (force quit) που βγαίνει από το αρχείο χωρίς να αποθηκεύσει τις αλλαγές που έχουν γίνει.

Χρήσιμα Keybinds

Μερικά από τα πιο βασικά και χρήσιμα keybinds, τα οποία εκτελεί ο χρήστης ενώ βρίσκεται στο Normal mode ή στο Visual mode είναι τα παρακάτω:

  • d+d : Διαγραφή της γραμμής στην οποία βρίσκεται ο κέρσορας και αποθήκευσή της στον default register.
  • y+y : Αντιγραφή της γραμμής στην οποία βρίσκεται ο κέρσορας και αποθήκευσή της στον default register.
  • /<keyword> : Αναζήτηση του <keyword> στο αρχείο.
  • y : Αντιγραφή του επιλεγμένου κειμένου στον default register.
  • p : Επικόλληση του περιεχόμενου που είναι αποθηκευμένο στον default register.
  • d : Διαγραφή του επιλεγμένου κειμένου και αποθήκευσή του στον default register.
  • "+++y : Αντιγραφή του επιλεγμένου κειμένου στο clipboard (γνωστό και ως '+' register).
  • "+++p : Επικόλληση του επιλεγμένου κειμένου στο clipboard (γνωστό και ως '+' register).
  • u : Αναίρεση της τελευταίας αλλαγής (undo).
  • Ctrl+r : Επαναφορά της τελευταίας αλλαγής που αναιρέθηκε (redo).
  • Shift+z+Shift+z : Κλείσιμο του neovim με αποθήκευση των αλλαγών.
  • g+g : Μετακίνηση του κέρσορα στην αρχή του αρχείου.
  • Shift+g : Μετακίνηση του κέρσορα στο τέλος του αρχείου.

Για περισσότερες πληροφορίες σχετικά με τις συντομεύσεις, δείτε εδώ

Ρύθμιση του Neovim

Για να ρυθμίσετε το Neovim, μεταβείτε στο σημείο όπου είναι το αρχείο ρύθμισης (config file) του Neovim (συνήθως ~/.config/nvim στο Linux. Εάν ο φάκελος δεν υπάρχει, θα χρειαστεί να τον δημιουργήσετε). Δημιουργήστε ένα αρχείο που ονομάζεται init.lua μέσα στον φάκελο nvim.

Το αρχείο init.lua εκτελείται κάθε φορά που ανοίγουμε το Neovim, επομένως μπορούμε να αποθηκεύσουμε τις ρυθμίσεις για το Neovim σε αυτό.

Ο προτεινόμενος τρόπος ρύθμισης του Neovim είναι με το διαχωρισμό του αρχείου init.lua σε πολλά, μικρότερα αρχεία (πχ ένα αρχείο για τα keybinds remap.lua, ένα αρχείο για τα plugins plugins.lua κτλ). Το βασικό αρχείο init.lua τα κάνει require, έτσι ώστε να είναι ευκολότερο κάποιος να περιηγηθεί και να ρυθμίσει το Neovim.

Εάν δεν θέλετε να δημιουργήσετε το δικό σας config file από την αρχή, υπάρχουν έτοιμες ρυθμίσεις όπως το kickstarter.nvim το οποίο έχει ένα αρχείο για τη ρύθμιση του Neovim και αποτελεί μια καλή βάση για να ξεκινήσει κάποιος, το LazyVim το οποίο πρόκειται για έναν έτοιμο IDE με πολλά plugins και ρυθμισμένα keybinds, κτλ. Για έναν πιο λεπτομερή οδηγό σχετικά με τη ρύθμιση της ρύθμισής σας, δείτε εδώ.

Ρύθμιση Eπιλογών

Στο Neovim, μπορείτε να ρυθμίσετε μια επιλογή του Neovim προσθέτοντας την ακόλουθη γραμμή στο init.lua.
set {option}
Παράδειγμα κώδικα για την εμφάνιση αριθμών γραμμών στο Neovim:
set number
Για περισσότερες πληροφορίες σχετικά με τις διαθέσιμες επιλογές, δείτε εδώ.

Ρύθμιση Keybinds

Τα Keybinds μας επιτρέπουν να δεσμεύσουμε έναν συνδυασμό πλήκτρων για την γρήγορη εκτέλεση εντολών ή συναρτήσεων.

Προκειμένου να δημιουργήσετε ένα keybind, μεταβείτε στο αρχείο init.lua και προσθέστε την ακόλουθη γραμμή:
vim.keymap.set(MODE, KEYBIND, COMMAND, OPTIONS)
Τo MODE είναι το mode στο οποίο θέλετε να ενεργοποιείται αυτό το keybind (πχ. n για Normal mode, i για Insert mode).
Το KEYBIND είναι ο συνδυασμός πλήκτρων που πρέπει να πατηθεί για να εκτελεστεί το COMMAND.
Τo COMMAND είναι η ενέργεια Neovim που εκτελείται όταν ενεργοποιείται το keybind.
Τo OPTIONS είναι οι επιλογές που θα οριστούν για αυτό το keybind.

Παράδειγμα Keybind:
vim.keymap.set ('n', '<leader> s', ':%s/<Old text>/<New text>/g', {silent = true})
(Η επιλογή {silent = true} θα κάνει το keybind να Μην εκτυπώνει το COMMAND που εκτελείται όταν ενεργοποιηθεί το Keybind)

Ρύθμιση Plugins

Εγκατάσταση Plugin Manager

Προκειμένου να ρυθμίσετε/εγκαταστήσετε plugins πρέπει πρώτα να εγκαταστήσετε έναν διαχειριστή επεκτάσεων (plugin manager), όπως το lazy.nvim. Για έναν πιο λεπτομερή οδηγό σχετικά με τον τρόπο εγκατάστασης του, κάντε κλικ εδώ.

Εγκατάσταση Plugin

Μπορείτε να εγκαταστήσετε ένα plugin με lazy.nvim προσθέτοντας το παρακάτω, στο init.lua:

    require("Lazy").setup({

        "Creator1/plugin1",

        "Creator2/plugin2",

})

Creator1/Creator2 είναι οι δημιουργοί του plugin. Το plugin1/plugin2 είναι τα plugins. Για παράδειγμα, για να προσθέσετε το plugin Comment.nvim, πρέπει να προσθέσουμε τη γραμμή numToStr/Comment.nvim όπου numToStr είναι το όνομα του δημιουργού και Comment.nvim το όνομα του plugin.