569 γραμμές
26 KiB
Markdown
569 γραμμές
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`, στη θέση του δρομέα
|
||
|