2019-10-19 14:40:32 +00:00
---
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
2021-08-22 09:17:35 +00:00
filename: LearnVim-gr.txt
2019-10-19 14:40:32 +00:00
---
[Vim ](http://www.vim.org )
To (Vi IMproved) είναι ένας κλώνος του δημοφιλούς vi editor γ ι α Unix.
Είναι ένας text editor σχεδιασμένος γ ι α ταχύτητα και αυξημένη παραγωγικότητα,
και υπάρχει σχεδόν σε όλα τα Unix-based συστήματα. Έχει διάφορα keybindings
(συντομεύσεις πλήκτρων) γ ι α ν α πλοηγούμαστε γρήγορα σε συγκεκριμένα σημεία ενός αρχείου,
καθώς και γ ι α γρήγορη επεξεργασία.
## Τ α βασικά της πλοήγησης στον Vim
```
vim < filename > # Άνοιξε το < filename > στον vim
:help < topic > # Άνοιξε το built-in βοήθημα γ ι α το < topic > α ν υπάρχει
:q # Βγες από τον vim
:w # Αποθήκευσε το τρέχον αρχείο
:wq # Αποθήκευσε το τρέχον αρχείο και βγες από τον vim
ZZ # Αποθήκευσε το τρέχον αρχείο και βγες από τον vim
:q! # Βγες χωρίς αποθήκευση
# ! *αναγκάζει* το :q ν α εκτελεστεί, γ ι αυτό βγαίνει χωρίς saving
:x # Ίδιο με το wq αλλά πιο σύντομο
u # Undo
CTRL+R # Redo
h # Μετακινήσου κατά ένα χαρακτήρα αριστερά
j # Μετακινήσου μια γραμμή κάτω
k # Μετακινήσου μια γραμμή πάνω
l # Μετακινήσου μια γραμμή δεξιά
2024-04-20 07:57:37 +00:00
Ctrl+B # Πήγαινε μία οθόνη πίσω
Ctrl+F # Πήγαινε μία οθόνη μπροστά
2019-10-19 14:40:32 +00:00
Ctrl+U # Πήγαινε μισή οθόνη πίσω
2024-04-20 07:57:37 +00:00
Ctrl+D # Πήγαινε μισή οθόνη μπροστά
2019-10-19 14:40:32 +00:00
# Μετακινήσεις στην ίδια γραμμή
0 # Πήγαινε στην αρχή της γραμμής
$ # Πήγαινε στο τέλος της γραμμής
^ # Πήγαινε στον πρώτο μη κενό χαρακτήρα της γραμμής
# Αναζήτηση στο κείμενο
/word # Υπογραμμίζει όλες τις εμφανίσεις της λέξης μετά τον cursor
?word # Υπογραμμίζει όλες τις εμφανίσεις της λέξης πριν τον cursor
n # Μετακινεί τον cursor στην επόμενη εμφάνιση της λέξης
N # Μετακινεί τον cursor στην προηγούμενη εμφάνιση της λέξης
:%s/foo/bar/g # άλλαξε το 'foo' σε 'bar' σε κάθε γραμμή του αρχείου
:s/foo/bar/g # άλλαξε το 'foo' σε 'bar' στην τρέχουσα γραμμή
# Άλματα σε χαρακτήρες
f< character > # Άλμα μπροστά και προσγείωση στο επόμενο < character >
t< character > # Άλμα μπροστά και προσγείωση αμέσως πριν το προηγούμενο < character >
# Για παράδειγμα,
f< # Άλμα μπροστά και προσγείωση σε <
t< # Άλμα μπροστά και προσγείωση αμέσως πριν <
# Μετακινήσεις κατά λέξεις
w # Πήγαινε μια λέξη μπροστά
b # Πήγαινε μια λέξη πίσω
e # Πήγαινε στο τέλος της λέξης στην οποία είσαι
# Άλλοι χαρακτήρες γ ι α ν α τριγυρνάμε
gg # Πήγαινε στην αρχή του αρχείου
G # Πήγαινε στο τέλος του αρχείου
:NUM # Πήγαινε στη γραμμή με αριθμό NUM (οποιοσδήποτε αριθμός)
H # Πήγαινε στην κορυφή της σελίδας
M # Πήγαινε στην μέση της σελίδας
L # Πήγαινε στο κάτω άκρο της σελίδας
```
2024-04-20 07:57:37 +00:00
## Help docs
2019-10-19 14:40:32 +00:00
Τ ο Vim έχει built-in help documentation που μπορείς ν α δεις με `:help <topic>` .
Για παράδειγμα το `:help navigation` θα σ ο υ εμφανίσει documentation σχετικό με
το πως ν α πλοηγείσαι στο αρχείο!
To `:help` μπορεί ν α χρησιμοποιηθεί και χωρίς option. Αυτό θα εμφανίσει το default
help dialog που σκοπεύει ν α κάνει το vim πιο προσιτό σε αρχάριους!
2024-04-20 07:57:37 +00:00
## Modes
2019-10-19 14:40:32 +00:00
O Vim στηρίζεται στο concept των **modes** .
- Command Mode - ο vim εκκινεί σε αυτό mode, χρησιμοποιείται γ ι α πλοήγηση και εντολές
- Insert Mode - χρησιμοποιείται γ ι α ν α κάνουμε αλλαγές στα αρχεία
- Visual Mode - χρησιμοποιείται γ ι α ν α υπογραμμίζουμε κείμενα και ν α κάνουμε διάφορα σε αυτά
- Ex Mode - χρησιμοποιείται γ ι α ν α πάμε στο κάτω μέρος με το ':' που δίνουμε εντολές
```
i # Βάζει το vim σε insert mode, πριν τη θέση cursor
a # Βάζει το vim σε insert mode, μετά τη θέση cursor
v # βάζει τον vim σε visual mode
: # Βάζει τον vim σε ex mode
< esc > # φεύγει από όποιο mode είμαστε και πάει σε command mode
# Αντιγραφή-Επικόληση κειμένου
y # Yank (κάνε copy) ό,τι είναι επιλεγμένο
yy # Yank την γραμμή στην οποία είσαι
d # διάγραψε ό,τι είναι επιλεγμένο
dd # Διάγραψε τη γραμμή στην οποία είσαι
p # Κάνε Paste το αντεγραμένο κείμενο μετά την θέση του cursor
P # Κάνε Paste το αντεγραμένο κείμενο πριν την θέση του cursor
x # Διάγραψε τον χαρακτήρα που είναι κάτω από τον cursor
```
## Η 'γραμματική' του Vim
Μπορείς ν α σκεφτείς τον Vim ως ένα σύνολο εντολών
σε μορφή 'Verb-Modifier-Noun', όπου
- Verb - η ενέργεια που θες ν α κάνεις
- Modifier - πώς κάνεις την ενέργεια
- Noun - το αντικείμενο που δέχεται την ενέργεια
Μερικά παραδείγματα ''Ρημάτων', 'Modifiers' και 'Ουσιαστικών':
```
# 'Ρήματα'
d # Διάγραψε
c # Άλλαξε
y # Yank (αντίγραψε)
v # Επίλεξε οπτικά
# 'Modifiers'
i # Μέσα
a # Γύρω
NUM # Αριθμός (NUM = οποιοσδήποτε αριθμός)
f # Ψάξε κάτι και πήγαινε εκεί που βρίσκεται
t # Ψάξε κάτι και πήγαινε πριν από εκεί που βρίσκεται
/ # Βρες κάποιο string μετά από τον cursor
? # Βρες κάποιο string πριν τον cursor
# 'Ουσιαστικά'
w # Λέξη
s # Πρόταση
p # Παράγραφος
b # Block
# Δείγματα 'προτάσεων' ή εντολών
d2w # Διάγραψε 2 λέξεις
cis # Άλλαξε μέσα στην πρώταση
yip # Αντίγραψε την παράγραφο στην οποία βρίσκεσαι
ct< # Άλλαξε σε <
# Άλλαξε το κείμενο από το οποίο είσαι πριν το επόμενο bracketChange the text from where you are to the next open bracket
d$ # Διάγραψε μέχρι το τέλος της γραμμής
```
## Μερικά shortcuts και κόλπα
<!-- TODO: Βάλτε κι άλλα! -->
```
> # Στοίχισε προς τα δεξιά την επιλογή σ ο υ κατά ένα block
< # Στοίχισε προς τα αριστερά την επιλογή σ ο υ κατά ένα block
:earlier 15m # Κάνε το αρχείο όπως ήταν πριν 15 λεπτά
:later 15m # Ακύρωση γ ι α την παραπάνω εντολή
ddp # Αντάλλαξε τις θέσεις διαδοχικών γραμμών
. # Επανάλαβε την προηγούμενη ενέργεια
:w !sudo tee % # Σώσε το τρέχον αρχείο ως root
:set syntax=c # Κάνε syntax highlighting γ ι α τη γλώσσα c
:sort # Ταξινόμησε όλες τις γραμμές
:sort! # Ταξινόμησε ανάποδα όλες τις γραμμές (αύξουσα σειρά)
:sort u # Ταξινόμησε όλες τις γραμμές και διάγραψε τις διπλές γραμμές
~ # Άλλαξε τα κεφαλαία σε μικρά στο επιλεγμένο κείμενο
u # Τ ο επιλεγμένο κείμενο ν α γίνει πεζά γράμματα
U # Τ ο επιλεγμένο κείμενο ν α γίνει κεφαλαία γράμματα
# Fold text
zf # Διπλώνει (συμπιέζει τις γραμμές σε μία) το επιλεγμένο κείμενο
zo # Ξεδιπλώνει το επιλεγμένο fold
zc # Κλείνει το επιλεγμένο fold
zR # Ανοίγει όλα τα folds
zM # Κλείνει όλα τα folds
```
## Macros
Τ α macros βασικά είναι καταγραφή ενεργειών.
Όταν ξεικάς ν α καταγράφεις ένα macro καταγράφονται **όλες** ο ι ενέργεις και ο ι
εντολές που χρησιμοποιείς, μέχρι ν α σταματήσεις την καταγραφή. Όταν καλείς ένα macro,
εκτελείται πάλι η ίδια σειρά από ενέργειες και εντολές στο επιλεγμένο κείμενο.
```
qa # Ξεκίνα ν α καταγράφεις ένα macro που θα ονομαστεί 'a'
q # Σταμάτα την καταγραφή
@a # Τρέξε το macro
```
### Configuring ~/.vimrc
Τ ο αρχείο .vimrc μπορεί ν α χρησιμοποιηθεί γ ι α ν α κάνεις configure το Vim στο startup.
Εδώ βλέπουμε δείγμα ενός ~/.vimrc file:
2024-04-20 07:57:37 +00:00
```vim
2019-10-19 14:40:32 +00:00
" Example ~/.vimrc
" 2015.10
" Required for vim to be iMproved
set nocompatible
" Determines filetype from name to allow intelligent auto-indenting, etc.
filetype indent plugin on
" Enable syntax highlighting
syntax on
" Better command-line completion
set wildmenu
" Use case insensitive search except when using capital letters
set ignorecase
set smartcase
" When opening a new line and no file-specific indenting is enabled,
" keep same indent as the line you're currently on
set autoindent
" Display line numbers on the left
set number
" Indentation options, change according to personal preference
" Number of visual spaces per TAB
set tabstop=4
" Number of spaces in TAB when editing
set softtabstop=4
" Number of spaces indented when reindent operations (>> and < < ) are used
set shiftwidth=4
" Convert TABs to spaces
set expandtab
" Enable intelligent tabbing and spacing for indentation and alignment
set smarttab
```
### Αναφορές
[Vim | Home ](http://www.vim.org/index.php )
`$ vimtutor`
[A vim Tutorial and Primer ](https://danielmiessler.com/study/vim/ )
[What are the dark corners of Vim your mom never told you about? (Stack Overflow thread) ](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about )
[Arch Linux Wiki ](https://wiki.archlinux.org/index.php/Vim )