Κόλπα με το GNU Readline

Readline

Στην εικόνα βλέπουμε διάφορους συνδυασμούς πλήκτρων. Δοκιμάστε τους σε ένα τερματικό

Μόλις είδατε την δύναμη του Readline. Το Readline είναι μια βιβλιοθήκη που χρησιμοποιούν πολλά προγράμματα που κάνουν χρήση το τερματικό. Θα την βρούμε οχι μόνο στο Bash αλλά και σε πολλά άλλα προγράμματα και REPL σε γλώσσες προγραμματισμού. Το Readline δεν επιτρέπει την χρήση του σε προγράμματα που δεν έχουν άδεια χρήσης GNU, αλλά υπάρχουν αντίστοιχες βιβλιοθήκες με τις ίδιες λειτουργίες σε άλλες άδειες.

Η γνώση του Readline θα κάνει ευκολότερη την χρήση του τερματικού. Μπορείς πάντα να κάνεις χωρίς αυτήν, αλλά δεν βλάπτει να μάθεις μερικούς συνδυασμούς. Τύπωσε την εικόνα ή κάποια CheatSheets και μάθε κάποιους σιγά σιγά. Θα με θυμηθείς.
Για παράδειγμα συχνά δεν ξέρω αν έχω κάνει λάθος σε κάποιο κωδικό. Αντί να πατάω <- πολλές φορές μέχρι να είμαι σίγουρος πως σβήστηκαν τα πάντα πάτα απλά ένα CtrlU που σβήνει οτιδήποτε υπήρχε πριν.

Οι δύο τρόποι λειτουργίας

Υπάρχει μια μεγάλη κόντρα ανάμεσα σε δυο ιστορικούς διορθωτές κειμένου, τον vi και τον emacs. Αν ξέρεις κάποιον από αυτούς ξέρεις ήδη να δουλέψεις την Readline. Εξ ορισμού είναι φτιαγμένη να ακολουθεί τα κόλπα του emacs, αλλά εύκολα την κάνεις να ακολουθεί τον vi. Στο bash αρκεί

 $ set -o vi

Μια ποιο γενική λύση είναι να προσθέσεις μια γραμμή στο αρχείο ρυθμίσεων της το ~/.inputrc

~/.inputrc

 set editing-mode vi

Μπορείς να κάνεις πολλές ρυθμίσεις και παραμετροποιήσεις και να την φέρεις στα μέτρα σου ή να φτιάξεις μακροεντολές. Αλλά δεν θα μπω σε λεπτομέρειες, αν σε ενδιαφέρει κάτι τέτοιο, κοίταξε στο βιβλίο του Bash. Αν βεβαία βρεις ή φτιάξεις κάτι που σε βολεύει, μπορείς να το μοιραστείς μαζί μας.

Βασικοί συνδυασμοί

Οι παρακάτω συνδυασμοί είναι πολύ χρήσιμοι.

  • CTRL-a : move cursor to the beginning of line
  • CTRL-e : move cursor to the end of line
  • CTRL-d : delete a character
  • CTRL-f : move cursor forward (→)
  • CTRL-b : move cursor backward (←)
  • CTRL-p : previous line, previous command in history (↑)
  • CTRL-n : next line, next command in history (↓)
  • CTRL-k : kill the line after the cursor, add to clipboard
  • CTRL-u : kill the line before the cursor, add to clipboard
  • CTRL-y : paste from the clipboard
  • ALT-b : move cursor back one word
  • ALT-f : move cursor forward one word

CheatSheets

Δείτε εδώ http://readline.kablamo.org/emacs.html και τυπώστε το

Επίσης

6 Likes

Πολύ ενδιαφέρουσες πληροφορίες.
Ξεχωρίζω την συντόμευση Alt + . για την εισαγωγή του ορίσματος της προηγούμενης εντολής.
Θα πρότεινα μια ενότητα tips & tricks ή αγαπημένες εφαρμογές (cli & gui)

Αυτές οι συντομεύσεις λοιπόν είναι μια γενικότερη βιβλιοθήκη που υπάρχει στο GNU/Linux όπως καταλαβαίνω τώρα ;
Και το Ctrl + r (reverse-i-search) ανήκει στη βιβλιοθήκη Readline ;

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

Ορίστε, ούτε αυτό το ήξερα! Καταπληκτικό! [ Ναι ήμουν από αυτούς που πάταγαν ένα σορό backspaces… ] Κοίτα να δεις τι υπάρχει! Σίγουρα μπορείς να παίζεις και χωρίς αυτές τις συντομεύσεις, αλλά έτσι και τις μάθεις νομίζω πως η ευελιξία και η ταχύτητα στην εργασία σου εκτοξεύετε και έπειτα δεν μπορείς χωρίς αυτό.

Συγνώμη αλλά στην ενότητα “Οι δύο τρόποι λειτουργίας” έπειτα από την κόντρα των δύο editors που αναφέρεις, κάπου σε χάνω μετά…

Ευχαριστούμε πολύ για το πολύ ενδιαφέρον και χρήσιμο topic!
Επίσης συμφωνώ με τον @kosmos890 :+1:

Αν δεν είσαι φανατικός χρήστης του vi δεν σε αφορά καθόλου :rofl:

Η Readline έρχεται μαζί με μια άλλη βιβλιοθήκη που κάνει διαχείριση του ιστορικού εντολών. Επίσης έχει δυνατότητες συμπλήρωσης (όπως πχ το Bash με το TAB), αλλά δεν κάνουν χρήση αυτής της δυνατότητας πολλά προγράμματα.

Γουστάρω απίστευτα vi, αλλά το θέμα είναι με τον vi να αρχίσεις να εξοικειώνεσαι πέρα από την απλή χρήση του ( που και αυτό θέλει δουλειά ), αλλά και με το να τον ρυθμίσεις ή και να κουμπώσεις ακόμη έξτρα plugins πάνω του ώστε να γίνει ακόμη πιο user friendly και πιο δυνατός.
Μου φαίνονται πολύ ενδιαφέρων και αυτά που αναφέρεις εδώ διότι δεν γνώριζα πως κρύβονται αυτά από πίσω… τρομερό!

Ευχαριστώ πολύ.

To Alt+τελίτσα είναι σωτήριο :yum:

Το libreadline έχει μια αδελφή βιβλιοθήκη την libhistory και συχνά χρησιμοποιούνται μαζί. Αυτό στο BASH κάνει πολλά πολλά περισσότερα. Ρίξε μια ματιά.

Ωραίο! Νομίζω κάπως πρέπει να μιλήσουμε για αυτό εκτενέστερα…
Και για τον VI κάποια στιγμή…