Vim – a very simple tutorial
Contents
vim : Vi Improved
Το Vim είναι o δημοφιλέστερος κειμενογράφος που υπάρχει.
Έαν από τα χαρακτηριστικά του είναι ότι υποστηρίζει καταστάσεις (modes).
Οι κυριότερες καταστάσεις είναι τρεις (3):
- Edit Mode
- Command Mode
- Execute Mode
Για να μεταβούμε στην Edit Mode πατάμε το πλήκτρο Insert.
Για να μεταβούμε από την Edit Mode στην Command Mode πατάμε το πλήκτρο esc.
Για να μεταβούμε από την Command Mode στην Execute Mode πληκτρολογούμε την άνω & κάτω τελεία (:).
Commands
ZZ | Αποθήκευση & Τερματισμος |
:q | Τερματισμός Vim |
:qa | Τερματισμός Vim χωρίς καμία αποθήκευση |
:q! | Τερματισμος Vim και αγνόησε αλλαγές |
:i | Εισαγωγή στην κατάσταση κειμενογράφου |
:e file_name | Άνοιγμα Αρχείου |
:edit file_name | Άνοιγμα Αρχείου |
:d | Delete lines |
:m | Move lines |
More Commands
:set nu | Εμφάνιση Γραμμών |
:set nonu | Μη εμφάνιση γραμμών |
:noh | No highlight |
:syntax on | Εμφάνιση σύνταξης κώδικα |
:! cmd | Εκτέλεση εντολής cmd |
:r! cmd | Eκτέλεση εντολής cmd και insert το output στο κείμενο |
:%s | :%s/ to_string_pou_theloume_na_allaksoume / to_string_pou_theloume_na_valoume / |
:sp filename | Άνοιγμα αρχείου διαιρώντας το παράθυρο |
i | Insert next letter |
shift+i | Insert previous letter |
o | Insert on below line |
shift +o | Insert on above line |
dd | Delete line |
yy | Copy line |
p | Paste |
u | Undo |
r | replace character |
R | replace characters |
m | Μαρκάρισμα γραμμής |
'x | Μετάβαση στην μαρκαρισμένη γραμμή |
''ayy | Copy test to buffer a [a-z] |
''ap | Paste a text buffer |
dw | delete word |
d$ | delete from here to the end of the line |
Vim Options
Άνοιγμα δύο (2) ή περισσοτέρων αρχείων σε οριζόντια διαχώριση:
vim -o file1 file2
Άνοιγμα δύο (2) ή περισσότερων αρχείων σε κάθετη διαχώριση:
vim -O file1 file2
Άνοιγμα και τοποθέτηση του κέρσορα στο τέλος ενός αρχείου:
vim + file
Άνοιγμα και τοποθέτηση του κέρσορα σε συγκεκριμένη γραμμή ενός αρχείου:
vim +10 file1
Άνοιγμα και τοποθέτηση του κέρσορα στο αλφαρηθμητικό αναζήτησης ενός αρχείου:
vim +/test file2
Άνοιγμα αρχείου με κωδικό:
vim -x test Enter encryption key: **** Enter same key again: ****
Και οτιδήποτε γράφουμε γίνεται encrypted.
> cat test VimCrypt ~01!��
vim usefull
Θέλουμε να τροποποιήσουμε ένα αλφαριθμητικό με ένα άλλο από την γραμμή m έως την γραμμή n:
:30,$ s/old/new/g
Θέλουμε να προσθέσουμε ένα σχόλιο στην αρχή σε όλες τις γραμμές:
:.,$ s/^/#/g
Θέλουμε να διαγράψουμε όλες τις κενές γραμμές από ένα αρχείο:
:g/^$/d
Θέλουμε να μεταφέρουμε 5 γραμμές στην αρχή :
:.,+5m0
Θέλουμε να διαγράψουμε όλες τις γραμμές από το σημείο που είμαστε μέχρι το τέλος του αρχείου:
:.,$d
Θέλουμε να ταξινομήσουμε ένα συγκεκριμένο αριθμό γραμμών :
Μεταβαίνουμε στην γραμμή και γράφουμε
:.,+162 sort
vim tabs
Στην έκδοση 7 του vim, υπάρχει η δυνατότητα του tab.
vim -p file1 file2 file3 file4
Όταν θέλω να τρέξω μία εντολή σε όλα τα tabs γράφω:
:tabdo %s/foo/bar/g
εναλλακτικά:
vim testfile1
:tabe testfile2
[ctrl] + w (twice)
για να αλλάξω καρτέλα
Vim Map Commands
Disable the F1 (help) in vim:
:nmap <F1> <nop>
Add a custom command to key shortcut:
:map <f1> :r! export -p LC_ALL=C; echo "\# ebal, `date`"<return>
Vim Cheat Sheet
file:vimcheatsheet.gif
My vimrc
" ebal, Mon Feb 14 08:37:12 EET 2011 syntax on set nu set hlsearch :map <f1> :r! echo "\# ebal, `date -R`"<return> :setlocal spell spelllang=en_us
multiple files
eg. vim file1 file2
go to the next file :
:bn
list opened files:
:ls
split them into horizontal split
:split file2
split them into vertical
:vs file2
move from one split to another
[ctrl] + w + right arrow
[ctrl] + w + left arrow
or
[ctrl] + w (twice)
Folds
:set foldmethod=expr :set foldexpr=getline(v:lnum)=~\"\\#\" :set foldmethod=expr :set foldexpr=getline(v:lnum)=~\"\\#\"&&getline(v:lnum)=~'\\S'?'<1':1 zf --> manual fold zi zR zo : fold open zc: fold close
μη-ορατοί χαρακτήρες
Δείξε τους μη-ορατούς χαρακτήρες:
:set list
Κρύψε τους μη-ορατούς χαρακτήρες:
:set list!
Νέα καρτέλα
eg.
vim -p src/*.ml
open a new tab
:tabe[dit] newfile
Μετακίνηση μεταξύ των tabs: gt ή gT
Μετακίνηση ενός tab στο τέλος :tabmove
Αναζήτηση σε όλα τα tabs
:vimgrep pacman **
tabs
tabstop
:set tabstop
επιστρέφει τον αριθμό χαρακτήρων του tab
:set tabstop 16
θέτει τον αριθμό χαρακτήρων του tab
expandtab
εάν ενεργοποιηθεί, προσθέτει spaces στο πλήθος ενός tab
indentation mode:
> <
shiftwidth
μπορείς να αλλάξεις το shiftwidth σε κάτι διαφορετικό από το tabstop
Προσθήκη tab χαρακτήρων σε γραμμές:
visual mode (select lines) & >
για προσθήκη tab χαρακτήρων
< για μείωση tab χαρακτήρων
softtabstop
δεν κατάλαβα τι είναι :(
macros
recordings of your typings to save you time and be awesome
eg. You want to remove any comments from your source code
:%s/^#/d
first you need to choose a macro name: c
c for comments
(escape mode)
type: q
and after that: c
type your code:
:%s/^#/d
and after that type: q
You can see your macros with: reg
(registers)
:help reg
for more info
To run your macro: @c
and see the magic
file explorer
:Explore ~
opens a new tab to your home dir for choosing a new file to edit.
x over an dir and the default file manager will popup up
file explorer
vim abbreviations
:h abbreviations :iab teh the :iabclear :iabbrev teh the :iab