Προσοχή όταν δίνετε μία εντολή έχει σημασία αν τα γράμματα είναι κεφαλαία ή μικρά.
Ανοίγοντας ένα αρχείο:
vi όνομα
Μετακίνηση μέσα στο αρχείο:
h (ή το αριστερό βελάκι) | Μία θέση αριστερά |
l (ή το δεξί βελάκι) | Μία θέση δεξιά |
k (ή το πάνω βελάκι) | Μία γραμμή πάνω |
j (ή το κάτω βελάκι) | Μία γραμμή κάτω |
w | Στην επόμενη λέξη |
Εισαγωγή και διαγραφή κειμένου:
Ο vi έχει δύο καταστάσεις, κατάσταση εντολών και κατάσταση
εισαγωγής κειμένου.
Για να μπείτε στην κατάσταση εισαγωγής κειμένου δίνετε:
i | Για να μπείτε στην κατάσταση εισαγωγής κειμένου χωρίς να μετακινηθεί ο δρομέας. |
a | Για να μπείτε στην κατάσταση εισαγωγής κειμένου μετακινούμενοι μία θέση δεξιά. |
I | Για να μπείτε στην κατάσταση εισαγωγής στην αρχή της γραμμής |
A | Για να μπείτε στην κατάσταση εισαγωγής στο τέλος της γραμμής |
Για να μπείτε στην κατάσταση εντολών δίνετε:
ESC ή ctrl-[
Για να κάνετε αλλαγές στο κείμενό σας:
x | διαγράφει τον χαρακτήρα όπου είναι ο δρομέας |
dd | διαγράφει την γραμμή που είναι ο δρομέας |
u | ακυρώνει την τελευταία αλλαγή |
Αναζήτηση χαρακτήρων/λέξεων μέσα στο κείμενο:
/χαρακτήρες | Βρίσκει την επόμενη γραμμή όπου εμφανίζεται το "χαρακτήρες". |
?χαρακτήρες | Βρίσκει την προηγούμενη γραμμή όπου εμφανίζεται το "χαρακτήρες". |
n | Επαναλαμβάνει την αναζήτηση στις επόμενες γραμμές. |
Σώζοντας και βγαίνοντας από ένα αρχείο:
:w | Σώζει τις τελευταίες αλλαγές και παραμένει μέσα στο αρχείο. |
:x | Σώζει τις τελευταίες αλλαγές και βγαίνει από το αρχείο |
:q! | Βγαίνει από το αρχείο χωρίς να σώσει τις αλλαγές |
Βασισμένο σε κείμενο του Αντώνη Δανάλη <danalis@edu.physics.uch.gr (http://www.edu.physics.uch.gr/~danalis/index3.html)>
Εντολές που σβήνουν ή αντιγράφουν κομμάτια του κειμένου
" | Ορίζει ένα ενταμιευτή ο οποίος μπορεί να χρησιμοποιηθεί από όλες τις εντολές που χρησιμοποιούν ενταμιευτές. Αν το " ακολουθείται από ένα γράμμα ή ένα νούμερο τότε αυτό είναι το όνομα του ενταμιευτή. |
D | Σβήνει από εκεί που βρίσκεται ο δρομέας μέχρι το τέλος της γραμμής |
p | Αντιγράφει τον ενταμιευτή που του ορίζουμε μετά την θέση ή την γραμμή που βρίσκεται ο δρομέας. Αν δεν ορίσουμε κάποιον συγκεκριμένο ενταμιευτή τότε η εντολή p χρησιμοποιεί τον γενικό.(Δείτε το παράδειγμα της εντολής ") |
P | Αντιγράφει τον ενταμιευτή που του ορίζουμε πριν την θέση ή την γραμμή που βρίσκεται ο δρομέας. Αν δεν ορίσουμε κάποιον συγκεκριμένο ενταμιευτή τότε η εντολή P χρησιμοποιεί τον γενικό.(Δείτε το παράδειγμα της εντολής ") |
x | Σβήνει τον χαρακτήρα πάνω στον οποίο βρίσκεται ο δρομέας. Αν πριν το x δώσουμε ένα αριθμό τότε θα σβηστούν τόσοι χαρακτήρες μετά το δρομέα. |
X | Σβήνει τον χαρακτήρα που βρίσκεται πριν το δρομέα. |
d | Σβήνει μέχρι εκεί που του ορίζουμε.Αν δώσουμε dd σβήνει όλη την γραμμή. Ό,τι σβήνεται τοποθετείται στον ενταμιευτή που του ορίζουμε με την εντολή " , αν δεν ορισθεί ενταμιευτής τότε χρησιμοποιείται ο γενικός. |
Y | Καταχωρεί την γραμμή στον ενταμιευτή που ορίζουμε, αν δεν ορίσουμε ενταμιευτή χρησιμοποιεί τον γενικό. |
y |
Καταχωρεί στον ενταμιευτή που του ορίζουμε (ή στον γενικό) το κομμάτι του
κειμένου που του ορίζουμε. Οι κανόνες που ακολουθεί είναι αυτοί που
ακολουθεί και η d εκτός από την καταχώρηση μίας γραμμής που γίνεται
δίνοντας yy |
Εντολές εισαγωγής κειμένου
A | Ξεκινάει την εισαγωγή του κειμένου από το τέλος της γραμμής |
I | Ξεκινάει την εισαγωγή του κειμένου από την αρχή της γραμμής |
o | Ξεκινάει την εισαγωγή του κειμένου στην από κάτω γραμμή από αυτή που βρίσκεται ο δρομέας. |
O | Το κεφαλαίο γράμμα Ο ξεκινάει την εισαγωγή του κειμένου στην από πάνω γραμμή από αυτή που βρίσκεται ο δρομέας. |
a | Ξεκινάει την εισαγωγή κειμένου μία θέση μετά από εκεί που βρίσκεται ο δρομέας. Συνδυάζοντας την εντολή a με έναν αριθμό n πετυχαίνουμε εισαγωγή κειμένου n φορές. |
i | Ξεκινάει την εισαγωγή κειμένου μία θέση πριν από εκεί που βρίσκεται ο δρομέας. Συνδυάζοντας την εντολή i με έναν αριθμό n πετυχαίνουμε εισαγωγή κειμένου n φορές. |
Μετακίνηση του δρομέα μέσα σε ένα αρχείο
^B | Πάει πίσω μία σελίδα. Μαζί με ένα νούμερο n γυρνάει n σελίδες πίσω. |
^F | Πάει μπροστά μία σελίδα. Μαζί με ένα νούμερο n πάει n σελίδες μπροστά. |
^D | Πάει μπροστά μισό παράθυρο. Μαζί με ένα νούμερο n πάει n παράθυρα μπροστά |
^H | Μετακινεί το δρομέα μία θέση αριστερά. Μαζί με ένα νούμερο n πάει n θέσεις δεξιά |
^J | Μετακινεί το δρομέα μία γραμμή κάτω στην ίδια γραμμή. Μαζί με ένα νούμερο n πάει n γραμμές κάτω. |
^M | Πηγαίνει στον πρώτο χαρακτήρα της επόμενης γραμμής. |
^N | Ό,τι και το ^J |
^P | Μετακινεί το δρομέα μία γραμμή κάτω στην ίδια γραμμή. Μαζί με ένα νούμερο n πάει n γραμμές κάτω. |
^U | Πάει πίσω μισό παράθυρο. Μαζί με ένα νούμερο n πάει n παράθυρα πίσω |
$ | Μετακινεί το δρομέα στο τέλος της γραμμής. Μαζί με ένα νούμερο n πάει στο τέλος της γραμμής που είναι n γραμμές κάτω από το δρομέα. |
% | Αν ο δρομέας είναι πάνω σε παρένθεση ή αγκύλη τότε τον μετακινεί σε αυτήν που της ταιριάζει |
( | Μετακινεί το δρομέα στην αρχή της περιόδου |
) | Μετακινεί το δρομέα στην αρχή της επόμενης περιόδου |
{ | Μετακινεί το δρομέα στην αρχή της παραγράφου |
} | Μετακινεί το δρομέα στην επόμενη παράγραφο |
| | n| Μετακινει το δρομέα στην στήλη n |
+ | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα της επόμενης γραμμής |
- | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα της προηγούμενης γραμμής |
^ | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα της γραμμής |
_ | Ό,τι και το ^ |
0 | Ο χαρακτήρας μηδέν μετακινεί το δρομέα στην πρώτη στήλη της γραμμής |
B | Μετακινεί το δρομέα μία λέξη πίσω |
E | Μετακινεί το δρομέα μία λέξη μπροστά |
nG | Μετακινεί το δρομέα στην γραμμή n. Αν δε δώσετε n, τότε πάει στο τέλος του κειμένου. |
H | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα στην κορυφή της οθόνης |
L | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα στο κάτω μέρος της οθόνης |
M | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα στο κέντρο της οθόνης |
W | Μετακινεί το δρομέα μία λέξη πίσω |
b | Μετακινεί το δρομέα μία λέξη πίσω. Αν ο δρομέας είναι μέσα σε λέξη τότε τον πάει στο πρώτο της γράμμα |
e | Μετακινεί το δρομέα μία λέξη μπροστά. Αν ο δρομέας είναι μέσα σε λέξη τότε τον πάει στο τελευταίο της γράμμα |
w | Ό,τι και το e |
h | Μετακινεί το δρομέα μία θέση αριστερά |
j | Μετακινεί το δρομέα μία γραμμή κάτω |
k | Μετακινεί το δρομέα μία γραμμή πάνω |
l | Μετακινεί το δρομέα μία θέση δεξιά |
Μετακίνηση του δρομέα στην οθόνη
n^E | Μετακινεί την οθόνη n γραμμές πάνω, χωρίς να την μετακινεί μία γραμμή. |
n^Y | Μετακινεί την οθόνη n γραμμές κάτω, χωρίς να την μετακινεί μία γραμμή. |
z | Αλλάζει την οθόνη ως εξής: z τοποθετεί την γραμμή στην κορυφή της οθόνης. z. τοποθετεί την γραμμή στο κέντρο της οθόνης. z- τοποθετεί την γραμμή στο κάτω μέρος της οθόνης. Αν πριν το z υπάρχει ένα νούμερο n, τότε κάνει αυτές τις αλλαγές για την γραμμή n. Για παράδειγμα 16z τοποθετεί στην κορυφή της οθόνης την γραμμή 16 |
Αντικατάσταση κειμένου
C | Αλλάζει την γραμμή από την θέση του δρομέα μέχρι το τέλος της |
R | Αλλάζει τόσους χαρακτήρες όσους δίνουμε και αφήνει άθικτους τους υπόλοιπους |
S | Αλλάζει ολόκληρη την γραμμή |
c | Αλλάζει την γραμμή μέχρι να βρει μία τελεία. Το cc αλλάζει ολόκληρη την γραμμή |
r | Αλλάζει τον χαρακτήρα που βρίσκεται ο δρομέας |
s | Αλλάζει τον χαρακτηρα που είναι ο δρομέας και μπαίνει σε insert mode. Με έναν αριθμό n αλλάζει n χαρακτήρες. Ο τελευταίος χαρακτήρας που είναι να αλλάξει αντικαθίσταται προσωρινά με ένα $ |
Εντολές για να ψάχνετε μέσα σε ένα κείμενο
/ | Ψάχνει προς τα κάτω το κείμενο για τη συμβολοσειρά (κανονική έκφραση) που ορίζουμε μετά το / |
? | Ψάχνει προς τα επάνω το κείμενο για τη συμβολοσειρά (κανονική έκφραση) που ορίζουμε μετά το ? |
n | Επαναλαμβάνει την τελευταία εντολή / ή ? |
N | Ό,τι και το n αλλά στην αντίθετη κατεύθυνση |
f | Ψάχνει μέσα στην γραμμή για τον χαρακτήρα που δίνουμε μετά το f και μετακινεί το δρομέα εκεί. |
F | Ψάχνει προς τα πίσω μέσα στην γραμμή για τον χαρακτήρα που δίνουμε μετά το f και μετακινεί το δρομέα εκεί. |
T | Ό,τι και το T αλλά πάει το δρομέα στην επόμενη θέση από τον χαρακτήρα. |
t | Ό,τι και το f αλλά πάει το δρομέα στην προηγούμενη θέση από τον χαρακτήρα |
; | Επαναλαμβάνει την τελευταία εντολή f ή F ή t ή T |
, | Επαναλαμβάνει την τελευταία εντολή f ή F ή t ή T αλλά στην αντίθετη κατεύθυνση |
Εντολές μορφοποίησης χαρακτήρων και γραμμών
~ | Αλλάζει από κεφαλαίο σε μικρό και από μικρό σε κεφαλαίο το γράμμα που είναι ο δρομέας |
<< | Μετακινεί την γραμμή προς τα αριστερά. Η τιμή του είναι μεταβλητή και μπορεί να ορισθεί από την set shiftwidth |
>> | Μετακινεί την γραμμή προς τα δεξιά. Η τιμή του είναι μεταβλητή και μπορεί να ορισθεί από την set shiftwidth |
J | Ενώνει την γραμμή που βρίσκεται ο δρομέας με την επόμενη. Με ένα νούμερο n μπροστά ενώνει n γραμμές |
Εντολές για να σώσετε και να βγείτε από ένα αρχείο
^\ | Μπαίνει σε ΕΧ mode. Ο EX editor είναι αυτός πάνω στον οποίο "χτίστηκε" ο VI. Για να επιστρέψετε σε vi mode δίνετε :vi |
Q | Ό,τι και η ^\ |
ZZ | Βγαίνει από το αρχείο σώζοντας τις αλλαγές |
Μερικές ακόμα εντολές
^G | Δείχνει το όνομα του αρχείου τον συνολικό αριθμό γραμμών που έχει και τον αριθμό της γραμμής που βρίσκεται ο δρομέας |
^L | Καθαρίζει την οθόνη. |
^R | Ξανασχεδιάζει την οθόνη και διορθώνει τα λάθη |
^[ | Το σύμβολο <ctrl>-[ είναι ουσιαστικά το <ESC> |
! | Η εντολή ! ξεκινάει ένα shell. Αμα ορίσετε κάποιες συγκεκριμένες γραμμές τότε χρησιμοποιεί αυτές σαν input και τις αντικαθιστά με το output. Η !! χρησιμοποιεί σαν input την γραμμή που είναι ο δρομέας. |
& | Επαναλαμβάνει την τελευταία εντολή αλλαγής :s |
. | Επαναλαμβάνει την τελευταία εντολή |
: | Δίνει την δυνατότητα να εκτελεστεί μια εντολή του ex. |
U | Φέρνει την γραμμή που είναι ο δρομέας στην γραμμή που ήταν πριν την αλλάξετε |
m | "Σημαδεύει" την θέση με τον χαρακτήρα που ακολουθεί το m |
u | Ακυρώνει την τελευταία αλλαγή. Δύο συνεχόμενα u αφήνουν το αρχείο όπως ήταν πριν από αυτά |
Εντολές του EX
Ο vi editor είναι βασισμένος πάνω σε έναν διορθωτή γραμμών, τον ex. Ετσι ο vi δίνει την δυνατότητα να εκτελεστούν οι εντολές του ex.
:ab string strings |
Κάνει συντομογραφία μιας συμβολοσειράς σε μια άλλη. Ετσι αν δώσετε: :ab usa United States of America τότε κάθε φορά που θα γράφετε usa θα εμφανίζεται το United States of America |
:map keys new_seq | Με την μέθοδο του mapping μπορείτε να κάνετε συντομογραφίες σε εντολες. |
:q | Βγαίνει από το αρχείο. Αν έχετε κάνει αλλαγές που δεν έχετε σώσει τότε εμφανίζεται ένα μήνυμα και δεν βγαίνει από το αρχείο |
:q! | Βγαίνει από το αρχείο χωρίς να σώσει τις τελευταίες αλλαγές |
:s/from/to/options | Αντικαθιστά την λέξη from στην λέξη to. |
:set [all] | Ορίζει της μεταβλητές του vi. Η εντολή set all δείχνει όλες τις μεταβλητές και για όσες υπάρχει, την τιμή τους. |
:una string | κάνει το ανάποδο από την ab, δηλαδή αφαιρεί από μια συμβολοσειρά την ιδιότητά του να είναι συντομογραφία κάποιας άλλης. |
:unm keys | Το αντίστοιχο του una αλλά για την εντολή map |
:vi filename | Ξεκινάει την επεξεργασία ενός άλλου αρχείου. |
:w | Σώζει το αρχείο και παραμένει μέσα σε αυτό |
:w new_file | Σώζει τα περιεχόμενα του αρχείου σε ένα άλλο με όνομα new_file |
:w >> filename | Προσθέτει το αρχείο, κάτω από το αρχείο filename |
:wq | Σώζει τις τελευταίές αλλαγές και βγαίνει από το αρχείο |
:x | Ότι και το x |
Βασισμένο σε κείμενο του Αντώνη Δανάλη <danalis@edu.physics.uch.gr (http://www.edu.physics.uch.gr/~danalis/index3.html)>
vi myprog echo Current Date: date echo Calendar for the Current Month: cal
sh myprog
kerkis:~$ sh myprog Current Date: Wed Nov 5 08:22:38 GMT+2 1997 Calendar for the Current Month: November 1997 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
read input echo $input