Share this page

Learn X in Y minutes

Where X=vim

Vim 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.

    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’, όπου

Μερικά παραδείγματα “Ρημάτων', ‘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

$ vimtutor

A vim Tutorial and Primer

What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)

Arch Linux Wiki


Got a suggestion? A correction, perhaps? Open an Issue on the Github Repo, or make a pull request yourself!

Originally contributed by RadhikaG, and updated by 0 contributor(s).