570 γραμμές
26 KiB
Markdown
570 γραμμές
26 KiB
Markdown
|
+++
|
|||
|
title = 'Οι βασικές λειτουργίες του VI'
|
|||
|
date = '1999-03-01T00:00:00Z'
|
|||
|
description = ''
|
|||
|
author = 'Ζανικόλας Σεραφείμ(mailto:serzan@it.teithe.gr)'
|
|||
|
issue = ['Magaz 22']
|
|||
|
issue_weight = 3
|
|||
|
+++
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
*Αυτό το έγγραφο φιλοδοξεί να παρουσιάσει με κατανοητό και γρήγορο τρόπο τις βασικές λειτουργίες του `VI`, ενός από τους καθιερωμένους επεξεργαστές κειμένου των
|
|||
|
UNIX λειτουργικών συστημάτων.*
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
**1. Σχετικά\...**
|
|||
|
---------------------------------------
|
|||
|
|
|||
|
**2. Εισαγωγή**
|
|||
|
------------------------------------
|
|||
|
|
|||
|
**3. Μετακίνηση**
|
|||
|
--------------------------------------
|
|||
|
|
|||
|
- [3.1 Στα όρια της ενεργής γραμμής](#ss3.1)
|
|||
|
- [3.2 Σε σχέση με την οθόνη](#ss3.2)
|
|||
|
- [3.3 Σε όλο το κείμενο](#ss3.3)
|
|||
|
|
|||
|
**4. Επεξεργασία Κειμένου**
|
|||
|
------------------------------------------------
|
|||
|
|
|||
|
- [4.1 Εισαγωγή](#ss4.1)
|
|||
|
- [4.2 Διαγραφή](#ss4.2)
|
|||
|
- [4.3 Αντικατάσταση](#ss4.3)
|
|||
|
- [4.4 Αλλες χρήσιμες εντολές επεξεργασίας](#ss4.4)
|
|||
|
|
|||
|
**5. Αναζήτηση**
|
|||
|
-------------------------------------
|
|||
|
|
|||
|
- [5.1 Στα όρια της ενεργής γραμμής](#ss5.1)
|
|||
|
- [5.2 Σε όλο το κείμενο](#ss5.2)
|
|||
|
|
|||
|
**6. Διαχείρηση Αρχείων**
|
|||
|
----------------------------------------------
|
|||
|
|
|||
|
**7. Διαχείριση περιοχών μνήμης προσωρινής αποθήκευσης (buffers)**
|
|||
|
---------------------------------------------------------------------------------------
|
|||
|
|
|||
|
**8. Διάφορες εντολές**
|
|||
|
--------------------------------------------
|
|||
|
|
|||
|
**9. Παραδείγματα**
|
|||
|
----------------------------------------
|
|||
|
|
|||
|
|
|||
|
### [1. Σχετικά\...]{#s1}
|
|||
|
|
|||
|
Όπως δηλώνει σαφώς και ο τίτλος, σε καμμία περίπτωση δεν αποτελεί πλήρη οδηγό του VI. Η ομαδοποίηση των εντολών έγινε αυθαίρετα έχοντας υπ\'όψη την -όσο το
|
|||
|
δυνατόν- ευκολότερη εκμάθηση τους. Για παρατηρήσεις / προτάσεις, επικοινωνήστε στην παραπάνω διεύθυνση. Τέλος το έγγραφο θα το βρείτε στη διεύθυνση
|
|||
|
http://aetos.it.teithe.gr/\~serzan/vi/vi.html
|
|||
|
|
|||
|
|
|||
|
### [2. Εισαγωγή]{#s2}
|
|||
|
|
|||
|
**Καταστάσεις Λειτουργίας, Εντολές**
|
|||
|
|
|||
|
: Ο `VI`(sual editor) έχει δύο βασικές καταστάσεις λειτουργίας:
|
|||
|
|
|||
|
- κατάσταση εντολών (command mode)
|
|||
|
- κατάσταση εισαγωγής κειμένου (text entry mode)
|
|||
|
|
|||
|
Κατά τη κατάσταση εντολών οτιδήποτε πληκτρολογείτε μεταφράζεται ως εντολή. Φροντίστε να είστε προσεκτικοί γιατί δε φαίνονται οι εντολές που δίνετε, βλέπετε
|
|||
|
μόνο τα αποτελέσματά τους. Εξαίρεση αποτελούν οι εντολές που αρχίζουν από \":\" (άνω κάτω τελεία) οι οποίες εμφανίζονται στο κάτω μέρος της οθόνης και
|
|||
|
εκτελούνται αφού πατήσετε `<CR>` (enter). Σε κατάσταση εισαγωγής κειμένου -σχεδόν- ο,τιδήποτε πληκτρολογείτε εισάγεται στο κείμενο.
|
|||
|
|
|||
|
**Εισαγωγή - Διαγραφή**
|
|||
|
|
|||
|
: Πατώντας `<ESC>` ή `^[` (control-\[) μπορείτε να είστε σίγουροι πως ο `VI` είναι σε κατάσταση εντολών. Βασικοί τρόποι για να περάσετε σε κατάσταση εισαγωγής
|
|||
|
κειμένου είναι: πατώντας `i` (insert - εισαγωγή κειμένου στη θέση του δρομέα), `a` (append - εισαγωγή κειμένου στην πρώτη θέση στα δεξιά του δρομέα) ή `o`
|
|||
|
(open(?) - εισαγωγή κειμένου σε νέα γραμμή κάτω από την ενεργή). Χρησιμοποιήστε το `x` για να διαγράψετε το χαρακτήρα στη θέση του δρομέα.
|
|||
|
|
|||
|
**Μετακίνηση**
|
|||
|
|
|||
|
: Για να κινηθείτε μέσα στο κείμενο, αφού βεβαιωθείτε πως είστε σε κατάσταση εντολών, χρησιμοποιήστε τα `h j k l` για αριστερά, κάτω, πάνω και δεξιά.
|
|||
|
Εναλλακτικά μπορείτε να χρησιμοποιήσετε τα βελάκια, κάτι που δε συνίσταται για λόγους ταχύτητας.
|
|||
|
|
|||
|
**Χειρισμός Αρχείων, Εξοδος**
|
|||
|
|
|||
|
: Οσο επεξεργάζεστε ένα αρχείο στον `VI`, ουσιαστικά δουλεύετε σε ένα αντίγραφο του αρχείου σε μία προσωρινή μνήμη (buffer). Οι αλλαγές που κάνετε στην
|
|||
|
προσωρινή μνήμη δεν αποθηκεύονται μέχρι τη στιγμή που θα δώσετε την εντολή `:w<CR>` (από το write). Εάν το αρχείο είναι read only μπορείτε να γράψετε μόνο
|
|||
|
με `:w!<CR>`, με την προυπόθεση φυσικά πως έχετε δικαίωμα εγγραφής στο αρχείο (write permission). Γράφοντας
|
|||
|
`:e filename<CR>` μπορείτε να ανοίξετε ένα νέο αρχείο για επεξεργ ασία, ενώ τερματίζετε τον `VI` με `:q<CR>`. Εφόσον δεν
|
|||
|
έχετε αποθηκεύσει τις αλλαγές που κάνατε ο `VI` θα διαμαρτυρηθεί και δε θα εκτελέσει την εντολή σας, σε αυτή την περίπτωση χρησιμοποιήστε `:e! filename<CR>`
|
|||
|
και `:q!<CR>` αντίστοιχα.
|
|||
|
|
|||
|
**Αντιγραφή, Διαγραφή, Επικόλληση**
|
|||
|
|
|||
|
: Οι εντολές `c[E]`, `y[E]` και `d[E]` (change-αλλαγή, yank-copy-αντιγραφή σε προσωρινή μνήμη, delete-διαγραφή και αντιγραφή στην προσωρινή μνήμη), επιδρούν
|
|||
|
σε περιοχή κειμένου που προσδιορίζεται από το επίθεμά `[E]` πχ. `yw` (yank word to buffer). Η επανάληψη (`cc`, `yy`, `dd)` υποδηλώνει την επίδρασή τους στην
|
|||
|
τρέχουσα γραμμή πχ. το `yy` αντιγράφει το περιεχόμενο της τρέχουσας γραμμής στην προσωρινή μνήμη (yank line to buffer). Επικόλληση κειμένου από την
|
|||
|
προσωρινή μνήμη γίνεται μ ε το `p`.
|
|||
|
|
|||
|
**Η Λογική Των Εντολών**
|
|||
|
|
|||
|
: Οι περισσότερες εντολές του `VI` μπορούν να δεχτούν ένα αριθμητικό πρόθεμα, με το οποίο δηλώνουμε πόσες φορές επιθυμούμε την εκτέλεση τους. Ετσι λοιπόν εκεί
|
|||
|
που το `dd` θα έσβηνε την τρέχουσα γραμμή το `3dd` σβήνει 3 γραμμές.
|
|||
|
|
|||
|
Ακολουθούν κάποια παραδείγματα. Είναι επιθυμητό ο αναγνώστης να εξοικειωθεί με όσα αναφέρθηκαν μέχρι στιγμής δεδομένου ότι οι εντολές των επόμενων κεφαλαίων
|
|||
|
ενδέχεται να προκαλέσουν σύγχιση.
|
|||
|
|
|||
|
**Παραδείγματα**
|
|||
|
|
|||
|
:
|
|||
|
|
|||
|
**`14l`**
|
|||
|
|
|||
|
: μεταφορά του δρομέα 14 θέσεις προς τα δεξιά
|
|||
|
|
|||
|
**`10j`**
|
|||
|
|
|||
|
: μεταφορά του δρομέα 10 σειρές προς τα κάτω
|
|||
|
|
|||
|
**`10x`**
|
|||
|
|
|||
|
: διαγραφή 10 χαρακτήρων, ξεκινώντας από το δρομέα προς τα δεξιά
|
|||
|
|
|||
|
**`cwtext`**
|
|||
|
|
|||
|
: αλλαγή λέξης με το text
|
|||
|
|
|||
|
**`3cctext`**
|
|||
|
|
|||
|
: αλλαγή τριών γραμμών με το text
|
|||
|
|
|||
|
**`7yw`**
|
|||
|
|
|||
|
: αντιγραφή 7 λέξεων στην προσωρινή μνήμη
|
|||
|
|
|||
|
**`3yy`**
|
|||
|
|
|||
|
: αντιγραφή 3 γραμμών στην προσωρινή μνήμη
|
|||
|
|
|||
|
**`5dw`**
|
|||
|
|
|||
|
: διαγραφή 5 λέξεων (και αντιγραφή στην προσωρινή μνήμη)
|
|||
|
|
|||
|
**`2dd`**
|
|||
|
|
|||
|
: διαγραφή 2 γραμμών (και αντιγραφή στην προσωρινή μνήμη)
|
|||
|
|
|||
|
|
|||
|
### [3. Μετακίνηση]{#s3}
|
|||
|
|
|||
|
Οι εντολές που δέχονται αριθμητικό πρόθεμα φαίνονται με το χαρακτήρα \[N\] ενώ εκείνες που μπορούν να χρησιμοποιηθούν ως επίθεμα των εντολών `y d c` με \[E\]
|
|||
|
|
|||
|
### [3.1 Στα όρια της ενεργής γραμμής]{#ss3.1}
|
|||
|
|
|||
|
**`[N][E] w b e`**
|
|||
|
|
|||
|
: μετακίνηση στην επόμενη λέξη, στην αρχή ή στο τέλος λέξης (οι λέξεις αποτελούνται από γράμματα και ψηφία, οτιδήποτε άλλο θεωρείται διαχωριστικό λέξης)
|
|||
|
|
|||
|
**`[N][E] W B E`**
|
|||
|
|
|||
|
: μετακίνηση στην επόμενη λέξη, στην αρχή ή στο τέλος λέξης (οι λέξεις αποτελούντα από οποιουσδήποτε χαρακτήρες εκτός από το κενό, που έιναι διαχωριστικό
|
|||
|
λέξης)
|
|||
|
|
|||
|
**`[E] 0`**
|
|||
|
|
|||
|
: μεταφορά του δρομέα στην πρώτη στήλη της ενεργής γραμμής
|
|||
|
|
|||
|
**`[E] n|`**
|
|||
|
|
|||
|
: μεταφορά του δρομέα στην νιοστή στήλη της ενεργής γραμμής ή στην πρώτη εάν δεν προσδιοριστεί το `n`
|
|||
|
|
|||
|
**`[E] $`**
|
|||
|
|
|||
|
: μετακίνηση του δρομέα στο τέλος της ενεργής γραμμής
|
|||
|
|
|||
|
### [3.2 Σε σχέση με την οθόνη]{#ss3.2}
|
|||
|
|
|||
|
**`[E] H`**
|
|||
|
|
|||
|
: μετακίνηση στην πρώτη γραμμή της οθόνης
|
|||
|
|
|||
|
**`[E] M`**
|
|||
|
|
|||
|
: μετακίνηση στη γραμμή στη μέση της οθόνης
|
|||
|
|
|||
|
**`[E] L`**
|
|||
|
|
|||
|
: μετακίνηση στην τελευταία γραμμή της οθόνης
|
|||
|
|
|||
|
**`^F`**
|
|||
|
|
|||
|
: μετακίνηση μία οθόνη προς τα κάτω
|
|||
|
|
|||
|
**`^B`**
|
|||
|
|
|||
|
: μετακίνηση μία οθόνη προς τα πάνω
|
|||
|
|
|||
|
### [3.3 Σε όλο το κείμενο]{#ss3.3}
|
|||
|
|
|||
|
**`[N] h j k l`**
|
|||
|
|
|||
|
: αριστερά, κάτω, πάνω, δεξιά (εναλλακτικά χρησιμοποιήστε τα βελάκια)
|
|||
|
|
|||
|
**`[E] nG`**
|
|||
|
|
|||
|
: μετακίνηση στη νιοστή γραμμή ή στο τέλος του αρχείου (χωρίς το `n`)
|
|||
|
|
|||
|
**`:n<CR>`**
|
|||
|
|
|||
|
: μετακίνηση στη νιοστή γραμμή
|
|||
|
|
|||
|
**`[E] 'a`**
|
|||
|
|
|||
|
: μετακίνηση στην πρώτη στήλη της γραμμής που σημειώθηκε ως `a`, αυτό γίνεται με την εντολή `ma` όπου `a` ένα οποιοδήποτε μικρό γράμμα του λατινικού αλφαβήτου
|
|||
|
|
|||
|
**`` [E] `a ``**
|
|||
|
|
|||
|
: μετακίνηση στη στήλη και στη γραμμή που σημειώθηκε ως `a`, αυτό γίνεται με την εντολή `ma` όπου `a` ένα οποιοδήποτε μικρό γράμμα του λατινικού αλφαβήτου
|
|||
|
|
|||
|
|
|||
|
### [4. Επεξεργασία Κειμένου]{#s4}
|
|||
|
|
|||
|
Οι εντολές που δέχονται αριθμητικό πρόθεμα φαίνονται με το χαρακτήρα \[N\] ενώ εκείνες που μπορούν να χρησιμοποιηθούν ως επίθεμα των εντολών `y d c` με \[E\]
|
|||
|
|
|||
|
### [4.1 Εισαγωγή]{#ss4.1}
|
|||
|
|
|||
|
**`atext`**
|
|||
|
|
|||
|
: γράφει το `text` στα δεξιά της θέσης του δρομέα (append)
|
|||
|
|
|||
|
**`A`text**
|
|||
|
|
|||
|
: γράφει το `text` στο τέλος της ενεργής γραμμής
|
|||
|
|
|||
|
**`itext`**
|
|||
|
|
|||
|
: γράφει το `text` στη θέση του δρομέα (insert)
|
|||
|
|
|||
|
**`Itext`**
|
|||
|
|
|||
|
: γράφει το `text` στην αρχή της ενεργής γραμμής
|
|||
|
|
|||
|
**`otext`**
|
|||
|
|
|||
|
: γράφει το `text` στην αρχή μιας νέας γραμμής που ανοίγει κάτω από την ενεργή (open)
|
|||
|
|
|||
|
**`Otext`**
|
|||
|
|
|||
|
: γράφει το `text` στην αρχή μιας νέας γραμμής που ανοίγει πάνω από την ενεργή
|
|||
|
|
|||
|
### [4.2 Διαγραφή]{#ss4.2}
|
|||
|
|
|||
|
Κάθε φορά που διαγράφετε κάτι, αυτό αντιγράφετε αυτόματα στη γενικής χρήσεως προσωρινή μνήμη (buffer).
|
|||
|
|
|||
|
**`[N] x`**
|
|||
|
|
|||
|
: διαγραφή του χαρακτήρα στον οποίο βρίσκεται ο δρομέας
|
|||
|
|
|||
|
**`[N] X`**
|
|||
|
|
|||
|
: διαγραφή του χαρακτήρα αριστερά του δρομέα
|
|||
|
|
|||
|
**`[N] d[E]`**
|
|||
|
|
|||
|
: διαγραφή από τη θέση του δρομέα εώς το σημείο που προσδιορίζει το `[E]`
|
|||
|
|
|||
|
**`[N] dd`**
|
|||
|
|
|||
|
: διαγραφή τρέχουσας γραμμής
|
|||
|
|
|||
|
**`D`**
|
|||
|
|
|||
|
: διαγραφή από τη θέση του δρομέα εώς το τέλος της γραμμής (ισοδύναμο με `d$`)
|
|||
|
|
|||
|
**`:d<CR>`**
|
|||
|
|
|||
|
: διαγραφή τρέχουσας γραμμής (ισοδύναμο με `dd`)
|
|||
|
|
|||
|
**`:nd<CR>`**
|
|||
|
|
|||
|
: διαγραφή νιοστής γραμμής, όπου `n` ακέραιος αριθμός που προσδιορίζει τον αριθμό γραμμής
|
|||
|
|
|||
|
**`:x,yd<CR>`**
|
|||
|
|
|||
|
: διαγραφή από την γραμμή `x` εώς και την `y`. Όπου `x` και `y` μπορεί να είναι: α) οποιοσδήποτε αριθμός γραμμής β). (τελεία - ενεργή γραμμή) γ) \$ (τελευταία
|
|||
|
γραμμή) δ) τα (β) ή (γ) + - αριθμητική σταθερά
|
|||
|
|
|||
|
### [4.3 Αντικατάσταση]{#ss4.3}
|
|||
|
|
|||
|
#### Στα όρια της ενεργής γραμμής
|
|||
|
|
|||
|
**`[N] c[E]text`**
|
|||
|
|
|||
|
: αλλαγή (change) του κειμένου, από το δρομέα εώς τη θέση που προσδιορίζει το `[E]`, με το `text`
|
|||
|
|
|||
|
**`[N] cctext`**
|
|||
|
|
|||
|
: αλλαγή ενεργής γραμμής με το `text`
|
|||
|
|
|||
|
**`Ctext`**
|
|||
|
|
|||
|
: αλλαγή του κειμένου, από το δρομέα εώς το τέλος της γραμμής, με το `text` (ισοδύναμο με `c$text`)
|
|||
|
|
|||
|
**`:s/re1/re2/<CR>`**
|
|||
|
|
|||
|
: αντικατάσταση (subtitute), ΜΟΝΟ της πρώτης συμβολοσειράς `re1` ή αυτής που προσδιορίζεται από την κανονική έκφραση `re1` (relative expression), που θα
|
|||
|
βρεθεί στην ενεργή γραμμή, με τη συμβολοσειρά `re2` ή αυτήν που προσδιορίζεται από την κανονική έκφραση `re2`
|
|||
|
|
|||
|
**`:s/re1/re2/g<CR>`**
|
|||
|
|
|||
|
: το ίδιο με τη διαφορά πως θα αντικαταστήσει ΟΛΑ τα `re1`, της ενεργής γραμμής, με το `re2` και όχι μόνο το πρώτο
|
|||
|
|
|||
|
**`:s/re1/re2/c<CR>`**
|
|||
|
|
|||
|
: το ίδιο με τη διαφορά πως θα σας ζητήσει επιβεβαίωση για κάθε αλλαγή που θα κάνει. Οι επιλογές `g` (global) και `c` (confirm) είναι προαιρετικές και μπορούν
|
|||
|
να χρησιμοποιηθούν και ταυτόχρονα
|
|||
|
|
|||
|
#### Σε όλο το κείμενο
|
|||
|
|
|||
|
**`:x,y s/re1/re2/<CR>`**
|
|||
|
|
|||
|
: αντικατάσταση, ΜΟΝΟ της πρώτης συμβολοσειράς `re1` ή αυτής που προσδιορίζεται από την κανονική έκφραση `re1` (relative expression), που θα βρεθεί στις
|
|||
|
γραμμές που προσδιορίζονται από τα `x` και `y`, με τη συμβολοσειρά `re2` ή αυτήν που προσδιορίζεται από την κανονική έκφραση `re2`. Όπου `x` και `y` μπορεί
|
|||
|
να είναι: α) οποιοσδήποτε αριθμός γραμμής β). (τελεία - ενεργή γραμμή) γ) \$ (τελευταία γραμμή) δ) τα (β) ή (γ) + - αριθμητική σταθε ρά
|
|||
|
|
|||
|
### [4.4 Αλλες χρήσιμες εντολές επεξεργασίας]{#ss4.4}
|
|||
|
|
|||
|
**`[N] ~`**
|
|||
|
|
|||
|
: αλλάζει το χαρακτήρα στη θέση του δρομέα, από μικρό σε κεφαλαίο ή αντίστροφα, και κινείται μία θέση δεξιά (μόνο για λατινικούς χαρακτήρες)
|
|||
|
|
|||
|
**`[N] u`**
|
|||
|
|
|||
|
: ακυρώνει μία ή περισσότερες ενέργεις (undo)
|
|||
|
|
|||
|
**`J`**
|
|||
|
|
|||
|
: ενώνει την ενεργή γραμμή με την επόμενη
|
|||
|
|
|||
|
|
|||
|
### [5. Αναζήτηση]{#s5}
|
|||
|
|
|||
|
Οι εντολές που δέχονται αριθμητικό πρόθεμα φαίνονται με το χαρακτήρα \[N\] ενώ εκείνες που μπορούν να χρησιμοποιηθούν ως επίθεμα των εντολών `y d c` με \[E\]
|
|||
|
|
|||
|
### [5.1 Στα όρια της ενεργής γραμμής]{#ss5.1}
|
|||
|
|
|||
|
**`[N][E] fa Fa`**
|
|||
|
|
|||
|
: μεταφορά του δρομέα στο πρώτο `a` που θα βρεθεί στη γραμμή προς τα δεξιά (`fa`) ή προς τα αριστερά (`Fa`)
|
|||
|
|
|||
|
**`[N][E] , ;`**
|
|||
|
|
|||
|
: επανάληψη τελευταίας αναζήτησης προς τα αριστερά (`,`) ή προς τα δεξιά (`;`)
|
|||
|
|
|||
|
### [5.2 Σε όλο το κείμενο]{#ss5.2}
|
|||
|
|
|||
|
**`/re`**
|
|||
|
|
|||
|
: αναζήτηση, προς τα εμπρός, του `re`, όπου `re` μια οποιαδήποτε συμβολοσειρά ή κανονική έκφραση
|
|||
|
|
|||
|
**`?re`**
|
|||
|
|
|||
|
: αναζήτηση, προς τα πίσω, του `re`, όπου `re` μια οποιαδήποτε συμβολοσειρά ή κανονική έκφραση
|
|||
|
|
|||
|
**`n`**
|
|||
|
|
|||
|
: επανάληψη τελευταίας αναζήτησης προς τα κάτω
|
|||
|
|
|||
|
**`N`**
|
|||
|
|
|||
|
: επανάληψη τελευταίας αναζήτησης προς τα πάνω
|
|||
|
|
|||
|
|
|||
|
### [6. Διαχείρηση Αρχείων]{#s6}
|
|||
|
|
|||
|
**`:w<CR>`**
|
|||
|
|
|||
|
: αποθήκευση αλλαγών στο αρχικό αρχείο
|
|||
|
|
|||
|
**`:w filename<CR>`**
|
|||
|
|
|||
|
: αποθήκευση αλλαγών στο `filename`
|
|||
|
|
|||
|
**`:wq<CR>`**
|
|||
|
|
|||
|
: αποθήκευση αλλαγών στο αρχικό αρχείο και τερματισμός του `VI`
|
|||
|
|
|||
|
**`:e filename<CR>`**
|
|||
|
|
|||
|
: ανοίγει το `filename` (αν δεν υπάρχει δημιουργεί ένα άδειο), θα εμφανιστεί προειδοποίηση σε περίπτωση που δεν έχουν αποθηκευτεί οι αλλαγές του αρχικού
|
|||
|
αρχείου
|
|||
|
|
|||
|
**`:e! filename<CR>`**
|
|||
|
|
|||
|
: ανοίγει το `filename` ανεξάρτητα από το αν έχουν αποθηκευτεί οι αλλαγές του πρώτου ή όχι
|
|||
|
|
|||
|
**`:r filename<CR>`**
|
|||
|
|
|||
|
: προσθέτει τα περιεχόμενα του αρχείου `filename` στη θέση του δρομέα
|
|||
|
|
|||
|
**`:r <!unix_cmd><CR>`**
|
|||
|
|
|||
|
: προσθέτει την έξοδο της εντολής `unix_cmd` στη θέση του δρομέα
|
|||
|
|
|||
|
**`:q <CR>`**
|
|||
|
|
|||
|
: έξοδος από τον `VI`, θα εμφανιστεί προειδοποίηση σε περίπτωση που δεν έχουν αποθηκευτεί οι αλλαγές
|
|||
|
|
|||
|
**`:q! <CR>`**
|
|||
|
|
|||
|
: έξοδος από τον `VI`, ανεξάρτητα από το αν έχουν αποθηκευτεί οι αλλαγές του αρχείου
|
|||
|
|
|||
|
|
|||
|
### [7. Διαχείριση περιοχών μνήμης προσωρινής αποθήκευσης (buffers)]{#s7}
|
|||
|
|
|||
|
Εκτός από την γενικής χρήσης ή ανώνυμη μνήμη αποθήκευσης υπάρχουν και οι επώνυμες, μία για κάθε (μικρό) γράμμα του λατινικού αλφαβήτου.
|
|||
|
|
|||
|
**`y[E]`**
|
|||
|
|
|||
|
: αντιγραφή του κειμένου, από το δρομέα εώς το σημείο που προσδιορίζει το `[E]`, στη γενικής χρήσης μνήμη
|
|||
|
|
|||
|
**`Y`**
|
|||
|
|
|||
|
: αντιγραφή της ενεργής γραμμής στη γενικής χρήσης μνήμη, ισοδύναμο του `yy`
|
|||
|
|
|||
|
**`"ay[E]`**
|
|||
|
|
|||
|
: αντιγραφή του κειμένου, από το δρομέα εώς το σημείο που προσδιορίζει το `[E]`, στην επώνυμη μνήμη `a`, όπου `a` οποιοδήποτε μικρό γράμμα του λατινικού
|
|||
|
αλφαβήτου
|
|||
|
|
|||
|
**`p P`**
|
|||
|
|
|||
|
: επικόλληση του περιεχομένου της γενικής χρήσης προσωρινής μνήμης μετά ή πριν τη θέση του δρομέα ή την ενεργή γραμμή (ανάλογα με το αν η μνήμη έχει λέξεις ή
|
|||
|
γραμμές)
|
|||
|
|
|||
|
**`"ap "aP`**
|
|||
|
|
|||
|
: επικόλληση του περιεχομένου της προσωρινής μνήμης `a` μετά ή πριν τη θέση του δρομέα
|
|||
|
|
|||
|
|
|||
|
### [8. Διάφορες εντολές]{#s8}
|
|||
|
|
|||
|
**`:sh`\<CR\>**
|
|||
|
|
|||
|
: προσωρινή έξοδος στο κέλυφος (shell), επιστροφή με `exit`
|
|||
|
|
|||
|
**`:!unix_cmd`\<CR\>**
|
|||
|
|
|||
|
: εκτέλεση της εντολής `unix_cmd`
|
|||
|
|
|||
|
**`:cd dir_name`\<CR\>**
|
|||
|
|
|||
|
: αλλαγή ενεργού καταλόγου στον `dir_name`
|
|||
|
|
|||
|
**`^G`**
|
|||
|
|
|||
|
: εμφανίζει το όνομα του αρχείου, ένδειξη τροποποίησης ή όχι, αρ.γραμμής και θέση του δρομέα στο αρχείο σε ποσοστό %
|
|||
|
|
|||
|
**`^Z`**
|
|||
|
|
|||
|
: προσωρινή διακοπή του `VI`, επιστροφή με fg
|
|||
|
|
|||
|
|
|||
|
### [9. Παραδείγματα]{#s9}
|
|||
|
|
|||
|
**`c4Wtext`**
|
|||
|
|
|||
|
: αλλαγή των 4 επόμενων λέξεων με το `text` (όπου λέξη οποιαδήποτε σειρά χαρακτήρων δεν περιέχει το κενό)
|
|||
|
|
|||
|
**`d4wtext`**
|
|||
|
|
|||
|
: διαγραφή των 4 επόμενων λέξεων (όπου λέξη οποιαδήποτε σειρά γραμμάτων και ψηφίων)
|
|||
|
|
|||
|
**`d0`**
|
|||
|
|
|||
|
: διαγραφή του κειμένου από τη θέση του δρομέα εώς την αρχή της γραμμής
|
|||
|
|
|||
|
**`d$`**
|
|||
|
|
|||
|
: διαγραφή του κειμένου από τη θέση του δρομέα εώς το τέλος της γραμμής
|
|||
|
|
|||
|
**`dN|`**
|
|||
|
|
|||
|
: διαγραφή του κειμένου από τη θέση του δρομέα εώς τη στήλη `N`
|
|||
|
|
|||
|
**`:11d<CR>`**
|
|||
|
|
|||
|
: διαγραφή της 11ης γραμμής
|
|||
|
|
|||
|
**`:.,.+3d<CR>`**
|
|||
|
|
|||
|
: διαγραφή της ενεργής γραμμής και των τριών επόμενων
|
|||
|
|
|||
|
**`:.,$d<CR>`**
|
|||
|
|
|||
|
: διαγραφή από την ενεργή γραμμή εώς το τέλος του αρχείου
|
|||
|
|
|||
|
**`4~`**
|
|||
|
|
|||
|
: αλλαγή των κεφαλαίων γραμμάτων σε μικρών και αντίστροφα, για τους επόμενους τέσσερεις χαρακτήρες
|
|||
|
|
|||
|
**`3u`**
|
|||
|
|
|||
|
: ακυρώνει τις τρεις τελευταίες ενέργειες (undo)
|
|||
|
|
|||
|
**`f*`**
|
|||
|
|
|||
|
: μετακίνηση του δρομέα στο πρώτο `*`
|
|||
|
|
|||
|
**`3f*`**
|
|||
|
|
|||
|
: μετακίνηση του δρομέα στο τρίτο `*`
|
|||
|
|
|||
|
**`y2fB`**
|
|||
|
|
|||
|
: αντιγραφή του κειμένου από το δρομέα εώς το δεύτερο B, στη γενικής χρήσης (ανώνυμη) μνήμη
|
|||
|
|
|||
|
**`d5fa`**
|
|||
|
|
|||
|
: διαγραφή του κειμένου από το δρομέα εώς το πέμπτο a, αντιγραφή στη γενικής χρήσης (ανώνυμη) μνήμη
|
|||
|
|
|||
|
**`c5fatext`**
|
|||
|
|
|||
|
: αλλαγή του κειμένου από το δρομέα εώς το πέμπτο a με το `text`
|
|||
|
|
|||
|
**`:s/text1/text2/<CR>`**
|
|||
|
|
|||
|
: αντικατάσταση του πρώτου `text1` που θα βρεθεί στην ενεργή γραμμή με το `text2`
|
|||
|
|
|||
|
**`:s/text1/text2/g<CR>`**
|
|||
|
|
|||
|
: αντικατάσταση όλων των `text1` που θα βρεθούν στην ενεργή γραμμή με το `text2`
|
|||
|
|
|||
|
**`:s/text1/text2/gc<CR>`**
|
|||
|
|
|||
|
: αντικατάσταση όλων των `text1` που θα βρεθούν στην ενεργή γραμμή, με το `text2`, μετά από επιβεβαίωση
|
|||
|
|
|||
|
**`:5,11 s/text1/text2/<CR>`**
|
|||
|
|
|||
|
: αντικατάσταση του πρώτου `text1` που θα βρεθεί στις γραμμές 5 εώς και 11, με το `text2`
|
|||
|
|
|||
|
**`:.,.+3 s/text1/text2/gc<CR>`**
|
|||
|
|
|||
|
: αντικατάσταση όλων των `text1` που θα βρεθούν στην ενεργή γραμμή και στις 3 επόμενες, με το `text2`, μετά από επιβεβαίωση
|
|||
|
|
|||
|
**`:.,$ s/text1/text2/gc<CR>`**
|
|||
|
|
|||
|
: αντικατάσταση όλων των `text1` που θα βρεθούν από την ενεργή γραμμή εώς και το τέλος του αρχείου, με το `text2`, μετά από επιβεβαίωση
|
|||
|
|
|||
|
**`"ayf.`**
|
|||
|
|
|||
|
: αντιγραφή του κειμένου από το δρομέα εώς την πρώτη τελεία, στην επώνυμη μνήμη `a`
|
|||
|
|
|||
|
**`"ap`**
|
|||
|
|
|||
|
: επικόλληση του περιεχομένου της επώνυμης μνήμης `a`, στα δεξιά του δρομέα
|
|||
|
|
|||
|
**`"zy2f)`**
|
|||
|
|
|||
|
: αντιγραφή του κειμένου από το δρομέα εώς τη δεύτερη παρένθεση, στην επώνυμη μνήμη `z`
|
|||
|
|
|||
|
**`"zP`**
|
|||
|
|
|||
|
: επικόλληση του περιεχομένου της επώνυμης μνήμης `z`, στη θέση του δρομέα
|
|||
|
|