View source for vim

{{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))
-----------