learnxinyminutes-docs/el-gr/vim-gr.html.markdown
anakimluke d9e8093c13
Update el-gr/vim-gr.html.markdown
Co-authored-by: 谭九鼎 <109224573@qq.com>
2020-06-09 18:31:29 -03:00

268 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
category: tool
tool: vim
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
filename: LearnVim.txt
lang: el-gr
---
[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 # Μετακινήσου μια γραμμή δεξιά
Ctrl+B # Πήγαινε μία οθόνη πίσω
Ctrl+F # Πήγαινε μία οθόνη μπροστά
Ctrl+U # Πήγαινε μισή οθόνη πίσω
Ctrl+D # Πήγαινε μισή οθόνη μπροστά
# Μετακινήσεις στην ίδια γραμμή
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 # Πήγαινε στο κάτω άκρο της σελίδας
```
## Help docs:
Το Vim έχει built-in help documentation που μπορείς να δεις με `:help <topic>`.
Για παράδειγμα το `:help navigation` θα σου εμφανίσει documentation σχετικό με
το πως να πλοηγείσαι στο αρχείο!
To `:help` μπορεί να χρησιμοποιηθεί και χωρίς option. Αυτό θα εμφανίσει το default
help dialog που σκοπεύει να κάνει το vim πιο προσιτό σε αρχάριους!
## Modes:
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:
```
" 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)