{{anchor href="top"}}
Hits : **{{hits}}**
== Vim - a very simple tutorial ==
{{ToC from="h2" to="h3"}}
====vim : Vi Improved====
http://www.vim.org
((#top))
-----------
Το Vim είναι o δημοφιλέστερος κειμενογράφος που υπάρχει.
Έαν από τα χαρακτηριστικά του είναι ότι υποστηρίζει καταστάσεις (modes).
Οι κυριότερες καταστάσεις είναι τρεις (3):
* Edit Mode
* Command Mode
* Execute Mode
Για να μεταβούμε στην Edit Mode πατάμε το πλήκτρο **Insert**.
Για να μεταβούμε από την Edit Mode στην Command Mode πατάμε το πλήκτρο **esc**.
Για να μεταβούμε από την Command Mode στην Execute Mode πληκτρολογούμε την άνω & κάτω τελεία (**:**).
((#top))
-----------
=== Commands ===
#|
|| ZZ| Αποθήκευση & Τερματισμος ||
|| :q | Τερματισμός Vim ||
|| :qa | Τερματισμός Vim χωρίς καμία αποθήκευση ||
|| :q! | Τερματισμος Vim και αγνόησε αλλαγές ||
|| :i | Εισαγωγή στην κατάσταση κειμενογράφου ||
|| :e file_name| ¶νοιγμα Αρχείου ||
|| :edit file_name | ¶νοιγμα Αρχείου ||
|| :d | Delete lines ||
|| :m | Move lines ||
|#
((#top))
-----------
==== 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 ||
|#
((#top))
-----------
==== Vim Options ====
¶νοιγμα δύο (2) ή περισσοτέρων αρχείων σε οριζόντια διαχώριση:
%%(html)
vim -o file1 file2
%%
((#top))
¶νοιγμα δύο (2) ή περισσότερων αρχείων σε κάθετη διαχώριση:
%%(html)
vim -O file1 file2
%%
¶νοιγμα και τοποθέτηση του κέρσορα στο τέλος ενός αρχείου:
%%(html)
vim + file
%%
¶νοιγμα και τοποθέτηση του κέρσορα σε συγκεκριμένη γραμμή ενός αρχείου:
%%(html)
vim +10 file1
%%
¶νοιγμα και τοποθέτηση του κέρσορα στο αλφαρηθμητικό αναζήτησης ενός αρχείου:
%%(html)
vim +/test file2
%%
¶νοιγμα αρχείου με κωδικό:
%%(code)
vim -x test
Enter encryption key: ****
Enter same key again: ****
%%
Και οτιδήποτε γράφουμε γίνεται encrypted.
%%(code)
> cat test
VimCrypt ~01!��
%%
((#top))
-----------
==== vim usefull ===
Θέλουμε να τροποποιήσουμε ένα αλφαριθμητικό με ένα άλλο από την γραμμή m έως την γραμμή n:
%%(html)
:30,$ s/old/new/g
%%
Θέλουμε να προσθέσουμε ένα σχόλιο στην αρχή σε όλες τις γραμμές:
%%(html)
:.,$ s/^/#/g
%%
Θέλουμε να διαγράψουμε όλες τις κενές γραμμές από ένα αρχείο:
%%(html)
:g/^$/d
%%
Θέλουμε να μεταφέρουμε 5 γραμμές στην αρχή :
%%(html)
:.,+5m0
%%
Θέλουμε να διαγράψουμε όλες τις γραμμές από το σημείο που είμαστε μέχρι το τέλος του αρχείου:
%%(html)
:.,$d
%%
Θέλουμε να ταξινομήσουμε ένα συγκεκριμένο αριθμό γραμμών :
Μεταβαίνουμε στην γραμμή και γράφουμε
%%(code)
:.,+162 sort
%%
((#top))
-----------
==== vim tabs ===
Στην έκδοση 7 του vim, υπάρχει η δυνατότητα του tab.
%%(html)
vim -p file1 file2 file3 file4
%%
Όταν θέλω να τρέξω μία εντολή σε όλα τα tabs γράφω:
%%(html)
: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
((#top))
-----------
====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
%%
((#top))
-----------
=== 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)
((#top))
-----------
=== 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
%%
((#top))
-----------
=== μη-ορατοί χαρακτήρες ===
Δείξε τους μη-ορατούς χαρακτήρες:
%%
:set list
%%
Κρύψε τους μη-ορατούς χαρακτήρες:
%%
:set list!
%%
((#top))
-----------
=== Νέα καρτέλα ===
eg.
%%
vim -p src/*.ml
%%
open a new tab
%%
:tabe[dit] newfile
%%
Μετακίνηση μεταξύ των tabs: gt ή gT
Μετακίνηση ενός tab στο τέλος :tabmove
Αναζήτηση σε όλα τα tabs
%%
:vimgrep pacman **
%%
((#top))
-----------
=== 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 **
δεν κατάλαβα τι είναι :(
((#top))
-----------
=== 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
((#top))
-----------
=== 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
((#top))
-----------
=== file explorer ===
vim abbreviations
%%
:h abbreviations
:iab teh the
:iabclear
:iabbrev teh the
:iab
%%
((#top))
-----------