Προς το περιεχόμενο

.vimrc


jemadux

Προτεινόμενες αναρτήσεις

εχετε κανενα καλο sample για το .vimrc ?? επειδη θελω να το δουλεψω και δεν προτιμω κατι λιγο καλο .vimrc ή ενα καλο howto ...

 

Στο github είδες ? Πολύς κόσμος έχει ανεβάσει αρχεία όπως vimrc, zshrc, κτλ και συνήθως περιέχουν σχόλια για τη λειτουργία κάθε επιλογής.

 

Επίσης μέσα από το vim μπορείς να τρέξεις :help options.txt και να δεις όλες τις επιλογές που μπορείς να θέσεις στο vimrc αλλά είναι σχετικά μεγάλος οδηγός.

 

Το δικό μου περιέχει περίπου τα παρακάτω (συν κάποια scripts/addons)

 

 

>
" vim:filetype=vim:shiftwidth=2:expandtab:foldmethod=marker

" Αν εκτελεστεί το "evim", θα έχουν ήδη ενεργοποιηθεί οι παρακάτω ρυθμίσεις.
if v:progname =~? "evim"
 finish
endif

" Επιλογές {{{

" Απενεργοποίηση της συμβατότητας με το απλό vi και χρήση των ρυθμίσεων
" του vim. Πρέπει να είναι πρώτο γιατί επηρεάζει τις υπόλοιπες ρυθμίσεις.
set nocompatible

" Στην λειτουργία εισαγωγής, το backspace θα λειτουργεί στα πάντα
" (πχ όταν ο δρομέας είναι στην αρχή της γραμμής και πατηθεί το backspace
" θα πηγαίνει στην προηγούμενη γραμμή).
set backspace=indent,eol,start

" Δεν θα διατηρούνται αρχεία backup για τους παρακάτω καταλόγους.
set backupskip+=/var/spool/cron/*

" Χρήση της κωδικοποίησης UTF-8
set encoding=utf-8

" Χρήση του $ για το τέλος της γραμμής, της τελείας . για τις space
" στο τέλος της γραμμής και των >- για το tab (πχ >------- για 8άρι tab)
set listchars=eol:$,tab:»-,trail:·

" Εισαγωγή μόνο του μεγαλύτερου κοινού μέρους των συμπληρώσεων
set completeopt=longest,menu

set autoindent          " Αντιγραφή της εσοχής της προηγούμενης γραμμής
                       " στην επόμενη. Διορθώνει ένα πρόβλημα.
set autoread            " Διαβάζει ξανά το αρχείο αν έχει αλλάξει
                       " από τότε που ανοίχθηκε.
set background=dark     " Το φόντο του τερματικού είναι σκοτεινό.
set nobackup            " Μη χρήση των αρχείων backup.
set cinoptions+=:0      " Μη χρήση εσοχής για τις ετικέτες case μέσα σε switch
set cinoptions+=(0,u0   " Στοίχιση των δηλώσεων όταν αλλάζει γραμμή
                       " και υπάρχει ανοιχτή παρένθεση.
set cinoptions+=U1      " Στοίχιση και αν η παρένθεση είναι ο πρώτος χαρακτήρας
set noexpandtab         " Θα χρησιμοποιούνται Tabs και όχι spaces.
set fencs=utf-8,cp1253  " Όταν διαβάζεται ένα αρχείο,
                       " θα δοκιμάζονται οι παρακάτω κωδικοποιήσεις.
set history=50          " Διατήρηση των τελευταίων 50 γραμμών στην ιστορία.
set hlsearch            " Χρωματισμός των αποτελεσμάτων εύρεσης.
set incsearch           " Τμηματική εύρεση.
set laststatus=2        " Εμφάνιση της γραμμής κατάστασης πάντα.
set ruler               " Εμφάνιση της θέσης του δρομέα συνέχεια.
set scrolloff=3         " Εμφάνιση τουλάχιστον 3 γραμμών κατά την κύλιση.
set shiftwidth=8        " Θα χρησιμοποιούνται 8 spaces για κάθε επίπεδο εσοχής.
set showcmd             " Εμφάνιση ημιτελών εντολών.
set tabstop=8           " Το Tab αντιστοιχεί σε 8 spaces.
set viminfo="NONE"      " Μη χρήση του .viminfo

set statusline=%f%4.(%m%)%4.(%r%)[%LL]\ [%{&ff}]\ %y
"               | |   |   |   |    |       |       |
"               | |   |   |   |    |       |       +- Τύπος του αρχείου
"               | |   |   |   |    |       +- Μορφοποίηση κειμένου (dos/unix)
"               | |   |   |   |    +- Συνολικός αριθμός γραμμών
"               | |   |   |   +- Εμφάνιση [RO] σε μόνο-αναγνώσιμα αρχεία
"               | |   |   +- Στοίχιση σε 4 χαρακτήρες ([RO])
"               | |   +- Εμφάνιση [+] αν υπάρχουν μη αποθηκευμένες αλλαγές
"               | |   στο αρχείο και [-] αν το αρχείο δεν μπορεί να αλλαχτεί
"               | +- Στοίχιση σε 4 χαρακτήρες (space + [+] ή [-])
"               +- Το όνομα του αρχείου με σχετικό path
set statusline+=%=%-14.(%l,%c%V%)\ %P
"                |  |    |  | |     |
"                |  |    |  | |     +- Ποσοστό στο οποίο βρίσκεται ο δρομέας
"                |  |    |  | +- Αριθμός εικονικής στήλης
"                |  |    |  +- Αριθμός πραγματικής στήλης
"                |  |    +- Αριθμός γραμμής
"                |  +- Αριστερή στοίχιση
"                +- Εμφάνιση στη δεξιά πλευρά

" }}}

" Εντοπισμός τύπου και συντακτική προβολή {{{

" Ενεργοποίηση της συντακτικής προβολής εφόσον το τερματικό διαθέτει χρώματα.
if &t_Co > 2 || has("gui_running")
 syntax on
 highlight SpecialKey ctermfg=red  " Χρήση κόκκινου χρώματος για την list.
endif

" Ενεργοποίηση του αυτόματου εντοπισμού τύπου του αρχείου και των εσοχών
" στο κείμενο ανάλογα με το τύπο.
filetype plugin indent on

" }}}

" Μεταβλητές {{{

" Χρήση του τύπου C αντί για C++ για τα αρχεία κεφαλίδων .h
let c_syntax_for_h = 1

" Απενεργοποίηση του netrw plugin που επιτρέπει την επεξεργασία
" αρχείων μέσω δικτύου και την περιήγηση καταλόγων
let g:loaded_netrw = 1
let g:loaded_netrwPlugin = 1

let mapleader = ','
let maplocalleader = ','

" }}}

" Συνδυασμοί πλήκτρων {{{

" Αντί για την κατάσταση Ex, το Q θα χρησιμεύει για την μορφοποίηση.
map Q gq

" Το CTRL-U σβήνει όλη τη γραμμή. Για αυτό το λόγο καλύτερα να γίνεται
" χρήση του CTRL-G u πρώτα ώστε να μπορεί να γίνει εύκολα αναίρεση
" σε περίπτωση λάθους.
inoremap <C-U> <C-G>u<C-U>

" Το jj στην κατάσταση εισαγωγής ισοδυναμεί με Escape
inoremap jj <Esc>

" Το πλήκτρο F2 στην κανονική λειτουργία και στην εισαγωγή θα ενεργοποιεί
" ή θα απενεργοποιεί την list.
nmap <silent> <F2> :set list!<cr>
imap <silent> <F2> <esc>:set list!<cr>a

" Το πλήκτρο F3 ρυθμίζει την επιλογή number
nmap <silent> <F3> :set number!<cr>
imap <silent> <F3> <esc>:set number!<cr>a

" Το πλήκτρο F5 εκτελεί την εντολή make
nmap <silent> <F5> :make<cr>

" Το πλήκτρο F10 ρυθμίζει την επιλογή hls
nmap <silent> <F10> :set hls!<cr>
imap <silent> <F10> <esc>:set hls!<cr>a

" (Απ)ενεργοποίηση της δυνατότητας επικόλλησης
set pastetoggle=<F12>

nnoremap <Left>     :echoerr "Το h αγκάθια έχει?"<cr>
nnoremap <Down>     :echoerr "Το j αγκάθια έχει?"<cr>
nnoremap <Up>       :echoerr "Το k αγκάθια έχει?"<cr>
nnoremap <Right>    :echoerr "Το l αγκάθια έχει?"<cr>
nnoremap <PageUp>   :echoerr "Το Ctrl-B αγκάθια έχει?"<cr>
nnoremap <PageDown> :echoerr "Το Ctrl-F αγκάθια έχει?"<cr>

nmap <leader>w  :w<cr>        " αποθήκευση του αρχείου
nmap <leader>q  :q<cr>        " έξοδος από το vim
nmap <leader>n  :next<cr>     " μεταφορά στο επόμενο αρχείο
nmap <leader>p  :prev<cr>     " μεταφορά στο προηγούμενο αρχείο
nmap <leader>bn :bnext<cr>    " μεταφορά στο επόμενο buffer
nmap <leader>bp :bprev<cr>    " μεταφορά στο προηγούμενο buffer
nmap <leader>to :tabnew<cr>   " άνοιγμα νέας καρτέλας
nmap <leader>tc :tabclose<cr> " κλείσιμο τρέχουσας καρτέλας
nmap <leader>tn :tabnext<cr>  " μεταφορά στην επόμενη καρτέλα
nmap <leader>tp :tabprev<cr>  " μεταφορά στην προηγούμενη καρτέλα
nmap <leader>cl :clist<cr>    " εμφάνιση των μηνυμάτων λάθους
nmap <leader>cw :cwin 5<cr>   " δημιουργία παραθύρου, εμφάνιση των λαθών εκεί
nmap <leader>cc :cclose<cr>   " εμφάνιση του μηνύματος λάθους
nmap <leader>cn :cnext<cr>    " εμφάνιση του επόμενου μηνύματος
nmap <leader>cp :cprev<cr>    " εμφάνιση του προηγούμενου μηνύματος
nmap <leader>mk :make<cr>     " εκτέλεση του makeprg
nmap <leader>s  :call <SID>Switch_Source_Header()<cr>

" }}}

" Autocommands {{{

augroup vimrcEx
 au!

 " Η κάθε γραμμή να περιέχει το πολύ 78 χαρακτήρες για τα αρχεία κειμένου.
 autocmd FileType text setlocal textwidth=78
 " Η κάθε γραμμή να περιέχει το πολύ 80 χαρακτήρες για τα αρχεία
 " της γλώσσας C. Η αυτόματη αναδίπλωση γίνεται για τα σχόλια αλλά όχι
 " για τον κώδικα.
 autocmd FileType c setlocal textwidth=80
 " Τονισμός της στήλης που βρίσκεται στο επιτρεπόμενο textwidth,
 " όπως στα eclipse,netbeans. Ένα παρόμοιο αποτέλεσμα μπορεί
 " να επιτευχθεί χρησιμοποιώντας τον συντακτικό χρωματισμό.
 " syn match TooLong /\%>80.\+$/ και highlight TooLong ctermfg=red
 autocmd FileType c setlocal colorcolumn=+0
 " Αυτόματη εισαγωγή άδειας σε αρχεία κώδικα της γλώσσας C
 autocmd BufNewFile *.c call <SID>Insert_License()
 " Αυτόματη εισαγωγή προστασίας από πολλαπλή δήλωση σε αρχεία κεφαλίδας
 autocmd BufNewFile *.h call <SID>Insert_Guard()

augroup END
" }}}

" Συναρτήσεις {{{

function! s:Insert_License()
 let l:license = expand("~/.vim/.COPYING")
 if (filereadable(l:license))
   exe "0read " . l:license
 endif
 normal! G
endfunction

function! s:Insert_Guard()
 call <SID>Insert_License()
 let l:gname = expand("%:t")                        " το όνομα χωρίς διαδρομή
 let l:gname = toupper(l:gname)                     " μετατροπή σε κεφαλαία
 let l:gname = substitute(l:gname, "\\.", "_", "g") " αλλαγή . σε _
 exe "normal! i#ifndef " . l:gname
 exe "normal! o#define " . l:gname
 normal! 3o
 exe "normal! o#endif /* " . l:gname . " */"
 normal! kk
endfunction

function! s:Switch_Source_Header()
 let l:curname = expand("%:r") " το όνομα χωρίς επέκταση
 let l:curext  = expand("%:e") " η επέκταση του αρχείου
 let l:myname  = ""
 if (l:curext == "c")
   let l:myname = l:curname . ".h"
 elseif (l:curext == "h")
   let l:myname = l:curname . ".c"
 endif
 if (filereadable(l:myname))
   exe "find " . l:myname
 endif
endfunction

" }}}

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

μια ακομα ερωτηση ... γιατι αμα τρεξω το vim .vimrc ειναι σε sections και πως θα τα κανω διαβασω ?

 

Αν εννοείς το δικό μου vimrc, εγώ το έκανα έτσι επειδή το αρχείο είναι μεγάλο. Έτσι όταν θέλω να προσθέσω κάποια εντολή, αντί να ψάχνω σε όλο το αρχείο απλά ανοίγω το αντίστοιχο fold. Το ίδιο θα μπορούσε να γίνει με πολλαπλά μικρά αρχεία τα οποία "φορτώνεις" από το κεντρικό vimrc.

 

Υπάρχουν διάφορα είδη folds με τα συγκεκριμένα να κάνουν χρήση των "markers". Υπό κανονικές συνθήκες, το vim δεν χρησιμοποιεί fold αν δεν του πεις εσύ. Υποστηρίζει όμως τις λεγόμενες modelines με τις οποίες μπορείς να του πεις να έχει συγκεκριμένη συμπεριφορά για το παρόν αρχείο. Αν προσέξεις την πρώτη γραμμή θα δεις ότι λέω foldmethod=marker για αυτό το εμφανίζει με κλειστά folds.

 

Για να ανοίξεις όλα τα folds με τη μία, πληκτρολόγησε zR. Για περισσότερες πληροφορίες τρέξε μέσα στο vim, :help folds και :help modeline. Επίσης μπορείς να διαβάσεις μια μικρή περιγραφή που είχα κάνει εδώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχει ωραίο vim-plugin και το vimrc-project του drupal στο οποίο κατά καιρούς έχω συνεισφέρει.

 

Αυτή τη στιγμή έχει πάψει να είναι ένα αρχείο αλλά έχει πολλά. Μπορείς όμως να δεις την τελευταία του εκδοχή σαν .vimrc εδώ:

http://drupalcode.org/project/vimrc.git/blob_plain/868e515232d0e2e828061cf50e5c6f88a510835e:/.vimrc

είναι 4 μηνών αλλά αυτό δεν λέει κάτι.

Είναι απλό και θα σε βοηθήσει πιστεύω (οι γραμμές 4-5 είναι δικές μου... να παινέψω το σπίτι μου λίγο ε? χεχεχε)

 

Αν σε ενδιαφέρει ίσως να μπορώ να σου φτιάξω ένα vimrc από το plugin-structure που ακολουθούμε τώρα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αναφέρεσαι στο plugin που βρίσκω εδώ:

http://vim.sourceforge.net/scripts/script.php?script_id=2204

 

έχει αναλυτικές πληροφορίες για το installation στην σελίδα και μέσα στο package

 

Απλά ανοίγεις το αρχείο και το κάνεις source από ότι λένε. Δουλεύει μια χαρά!

>    vim twitvim.vmb 
   :source %

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 7 χρόνια αργότερα...
Στις 16/2/2012 στις 9:43 ΜΜ, imitheos είπε

Αν εννοείς το δικό μου vimrc, εγώ το έκανα έτσι επειδή το αρχείο είναι μεγάλο. Έτσι όταν θέλω να προσθέσω κάποια εντολή, αντί να ψάχνω σε όλο το αρχείο απλά ανοίγω το αντίστοιχο fold. Το ίδιο θα μπορούσε να γίνει με πολλαπλά μικρά αρχεία τα οποία "φορτώνεις" από το κεντρικό vimrc.

Υπάρχουν διάφορα είδη folds με τα συγκεκριμένα να κάνουν χρήση των "markers". Υπό κανονικές συνθήκες, το vim δεν χρησιμοποιεί fold αν δεν του πεις εσύ. Υποστηρίζει όμως τις λεγόμενες modelines με τις οποίες μπορείς να του πεις να έχει συγκεκριμένη συμπεριφορά για το παρόν αρχείο. Αν προσέξεις την πρώτη γραμμή θα δεις ότι λέω foldmethod=marker για αυτό το εμφανίζει με κλειστά folds.

Για να ανοίξεις όλα τα folds με τη μία, πληκτρολόγησε zR. Για περισσότερες πληροφορίες τρέξε μέσα στο vim, :help folds και :help modeline. Επίσης μπορείς να διαβάσεις μια μικρή περιγραφή που είχα κάνει εδώ

μπορουμε να το κανουμε το ιδιο για τον neovim ? λεω να παιξω μπαλα με τον neovim 

Στις 13/2/2012 στις 11:13 ΜΜ, imitheos είπε

Στο github είδες ? Πολύς κόσμος έχει ανεβάσει αρχεία όπως vimrc, zshrc, κτλ και συνήθως περιέχουν σχόλια για τη λειτουργία κάθε επιλογής.

Επίσης μέσα από το vim μπορείς να τρέξεις :help options.txt και να δεις όλες τις επιλογές που μπορείς να θέσεις στο vimrc αλλά είναι σχετικά μεγάλος οδηγός.

Το δικό μου περιέχει περίπου τα παρακάτω (συν κάποια scripts/addons)

  Απόκρυψη περιεχομένων


>
" vim:filetype=vim:shiftwidth=2:expandtab:foldmethod=marker

" Αν εκτελεστεί το "evim", θα έχουν ήδη ενεργοποιηθεί οι παρακάτω ρυθμίσεις.
if v:progname =~? "evim"
 finish
endif

" Επιλογές {{{

" Απενεργοποίηση της συμβατότητας με το απλό vi και χρήση των ρυθμίσεων
" του vim. Πρέπει να είναι πρώτο γιατί επηρεάζει τις υπόλοιπες ρυθμίσεις.
set nocompatible

" Στην λειτουργία εισαγωγής, το backspace θα λειτουργεί στα πάντα
" (πχ όταν ο δρομέας είναι στην αρχή της γραμμής και πατηθεί το backspace
" θα πηγαίνει στην προηγούμενη γραμμή).
set backspace=indent,eol,start

" Δεν θα διατηρούνται αρχεία backup για τους παρακάτω καταλόγους.
set backupskip+=/var/spool/cron/*

" Χρήση της κωδικοποίησης UTF-8
set encoding=utf-8

" Χρήση του $ για το τέλος της γραμμής, της τελείας . για τις space
" στο τέλος της γραμμής και των >- για το tab (πχ >------- για 8άρι tab)
set listchars=eol:$,tab:»-,trail:·

" Εισαγωγή μόνο του μεγαλύτερου κοινού μέρους των συμπληρώσεων
set completeopt=longest,menu

set autoindent          " Αντιγραφή της εσοχής της προηγούμενης γραμμής
                       " στην επόμενη. Διορθώνει ένα πρόβλημα.
set autoread            " Διαβάζει ξανά το αρχείο αν έχει αλλάξει
                       " από τότε που ανοίχθηκε.
set background=dark     " Το φόντο του τερματικού είναι σκοτεινό.
set nobackup            " Μη χρήση των αρχείων backup.
set cinoptions+=:0      " Μη χρήση εσοχής για τις ετικέτες case μέσα σε switch
set cinoptions+=(0,u0   " Στοίχιση των δηλώσεων όταν αλλάζει γραμμή
                       " και υπάρχει ανοιχτή παρένθεση.
set cinoptions+=U1      " Στοίχιση και αν η παρένθεση είναι ο πρώτος χαρακτήρας
set noexpandtab         " Θα χρησιμοποιούνται Tabs και όχι spaces.
set fencs=utf-8,cp1253  " Όταν διαβάζεται ένα αρχείο,
                       " θα δοκιμάζονται οι παρακάτω κωδικοποιήσεις.
set history=50          " Διατήρηση των τελευταίων 50 γραμμών στην ιστορία.
set hlsearch            " Χρωματισμός των αποτελεσμάτων εύρεσης.
set incsearch           " Τμηματική εύρεση.
set laststatus=2        " Εμφάνιση της γραμμής κατάστασης πάντα.
set ruler               " Εμφάνιση της θέσης του δρομέα συνέχεια.
set scrolloff=3         " Εμφάνιση τουλάχιστον 3 γραμμών κατά την κύλιση.
set shiftwidth=8        " Θα χρησιμοποιούνται 8 spaces για κάθε επίπεδο εσοχής.
set showcmd             " Εμφάνιση ημιτελών εντολών.
set tabstop=8           " Το Tab αντιστοιχεί σε 8 spaces.
set viminfo="NONE"      " Μη χρήση του .viminfo

set statusline=%f%4.(%m%)%4.(%r%)[%LL]\ [%{&ff}]\ %y
"               | |   |   |   |    |       |       |
"               | |   |   |   |    |       |       +- Τύπος του αρχείου
"               | |   |   |   |    |       +- Μορφοποίηση κειμένου (dos/unix)
"               | |   |   |   |    +- Συνολικός αριθμός γραμμών
"               | |   |   |   +- Εμφάνιση [RO] σε μόνο-αναγνώσιμα αρχεία
"               | |   |   +- Στοίχιση σε 4 χαρακτήρες ([RO])
"               | |   +- Εμφάνιση [+] αν υπάρχουν μη αποθηκευμένες αλλαγές
"               | |   στο αρχείο και [-] αν το αρχείο δεν μπορεί να αλλαχτεί
"               | +- Στοίχιση σε 4 χαρακτήρες (space + [+] ή [-])
"               +- Το όνομα του αρχείου με σχετικό path
set statusline+=%=%-14.(%l,%c%V%)\ %P
"                |  |    |  | |     |
"                |  |    |  | |     +- Ποσοστό στο οποίο βρίσκεται ο δρομέας
"                |  |    |  | +- Αριθμός εικονικής στήλης
"                |  |    |  +- Αριθμός πραγματικής στήλης
"                |  |    +- Αριθμός γραμμής
"                |  +- Αριστερή στοίχιση
"                +- Εμφάνιση στη δεξιά πλευρά

" }}}

" Εντοπισμός τύπου και συντακτική προβολή {{{

" Ενεργοποίηση της συντακτικής προβολής εφόσον το τερματικό διαθέτει χρώματα.
if &t_Co > 2 || has("gui_running")
 syntax on
 highlight SpecialKey ctermfg=red  " Χρήση κόκκινου χρώματος για την list.
endif

" Ενεργοποίηση του αυτόματου εντοπισμού τύπου του αρχείου και των εσοχών
" στο κείμενο ανάλογα με το τύπο.
filetype plugin indent on

" }}}

" Μεταβλητές {{{

" Χρήση του τύπου C αντί για C++ για τα αρχεία κεφαλίδων .h
let c_syntax_for_h = 1

" Απενεργοποίηση του netrw plugin που επιτρέπει την επεξεργασία
" αρχείων μέσω δικτύου και την περιήγηση καταλόγων
let g:loaded_netrw = 1
let g:loaded_netrwPlugin = 1

let mapleader = ','
let maplocalleader = ','

" }}}

" Συνδυασμοί πλήκτρων {{{

" Αντί για την κατάσταση Ex, το Q θα χρησιμεύει για την μορφοποίηση.
map Q gq

" Το CTRL-U σβήνει όλη τη γραμμή. Για αυτό το λόγο καλύτερα να γίνεται
" χρήση του CTRL-G u πρώτα ώστε να μπορεί να γίνει εύκολα αναίρεση
" σε περίπτωση λάθους.
inoremap <C-U> <C-G>u<C-U>

" Το jj στην κατάσταση εισαγωγής ισοδυναμεί με Escape
inoremap jj <Esc>

" Το πλήκτρο F2 στην κανονική λειτουργία και στην εισαγωγή θα ενεργοποιεί
" ή θα απενεργοποιεί την list.
nmap <silent> <F2> :set list!<cr>
imap <silent> <F2> <esc>:set list!<cr>a

" Το πλήκτρο F3 ρυθμίζει την επιλογή number
nmap <silent> <F3> :set number!<cr>
imap <silent> <F3> <esc>:set number!<cr>a

" Το πλήκτρο F5 εκτελεί την εντολή make
nmap <silent> <F5> :make<cr>

" Το πλήκτρο F10 ρυθμίζει την επιλογή hls
nmap <silent> <F10> :set hls!<cr>
imap <silent> <F10> <esc>:set hls!<cr>a

" (Απ)ενεργοποίηση της δυνατότητας επικόλλησης
set pastetoggle=<F12>

nnoremap <Left>     :echoerr "Το h αγκάθια έχει?"<cr>
nnoremap <Down>     :echoerr "Το j αγκάθια έχει?"<cr>
nnoremap <Up>       :echoerr "Το k αγκάθια έχει?"<cr>
nnoremap <Right>    :echoerr "Το l αγκάθια έχει?"<cr>
nnoremap <PageUp>   :echoerr "Το Ctrl-B αγκάθια έχει?"<cr>
nnoremap <PageDown> :echoerr "Το Ctrl-F αγκάθια έχει?"<cr>

nmap <leader>w  :w<cr>        " αποθήκευση του αρχείου
nmap <leader>q  :q<cr>        " έξοδος από το vim
nmap <leader>n  :next<cr>     " μεταφορά στο επόμενο αρχείο
nmap <leader>p  :prev<cr>     " μεταφορά στο προηγούμενο αρχείο
nmap <leader>bn :bnext<cr>    " μεταφορά στο επόμενο buffer
nmap <leader>bp :bprev<cr>    " μεταφορά στο προηγούμενο buffer
nmap <leader>to :tabnew<cr>   " άνοιγμα νέας καρτέλας
nmap <leader>tc :tabclose<cr> " κλείσιμο τρέχουσας καρτέλας
nmap <leader>tn :tabnext<cr>  " μεταφορά στην επόμενη καρτέλα
nmap <leader>tp :tabprev<cr>  " μεταφορά στην προηγούμενη καρτέλα
nmap <leader>cl :clist<cr>    " εμφάνιση των μηνυμάτων λάθους
nmap <leader>cw :cwin 5<cr>   " δημιουργία παραθύρου, εμφάνιση των λαθών εκεί
nmap <leader>cc :cclose<cr>   " εμφάνιση του μηνύματος λάθους
nmap <leader>cn :cnext<cr>    " εμφάνιση του επόμενου μηνύματος
nmap <leader>cp :cprev<cr>    " εμφάνιση του προηγούμενου μηνύματος
nmap <leader>mk :make<cr>     " εκτέλεση του makeprg
nmap <leader>s  :call <SID>Switch_Source_Header()<cr>

" }}}

" Autocommands {{{

augroup vimrcEx
 au!

 " Η κάθε γραμμή να περιέχει το πολύ 78 χαρακτήρες για τα αρχεία κειμένου.
 autocmd FileType text setlocal textwidth=78
 " Η κάθε γραμμή να περιέχει το πολύ 80 χαρακτήρες για τα αρχεία
 " της γλώσσας C. Η αυτόματη αναδίπλωση γίνεται για τα σχόλια αλλά όχι
 " για τον κώδικα.
 autocmd FileType c setlocal textwidth=80
 " Τονισμός της στήλης που βρίσκεται στο επιτρεπόμενο textwidth,
 " όπως στα eclipse,netbeans. Ένα παρόμοιο αποτέλεσμα μπορεί
 " να επιτευχθεί χρησιμοποιώντας τον συντακτικό χρωματισμό.
 " syn match TooLong /\%>80.\+$/ και highlight TooLong ctermfg=red
 autocmd FileType c setlocal colorcolumn=+0
 " Αυτόματη εισαγωγή άδειας σε αρχεία κώδικα της γλώσσας C
 autocmd BufNewFile *.c call <SID>Insert_License()
 " Αυτόματη εισαγωγή προστασίας από πολλαπλή δήλωση σε αρχεία κεφαλίδας
 autocmd BufNewFile *.h call <SID>Insert_Guard()

augroup END
" }}}

" Συναρτήσεις {{{

function! s:Insert_License()
 let l:license = expand("~/.vim/.COPYING")
 if (filereadable(l:license))
   exe "0read " . l:license
 endif
 normal! G
endfunction

function! s:Insert_Guard()
 call <SID>Insert_License()
 let l:gname = expand("%:t")                        " το όνομα χωρίς διαδρομή
 let l:gname = toupper(l:gname)                     " μετατροπή σε κεφαλαία
 let l:gname = substitute(l:gname, "\\.", "_", "g") " αλλαγή . σε _
 exe "normal! i#ifndef " . l:gname
 exe "normal! o#define " . l:gname
 normal! 3o
 exe "normal! o#endif /* " . l:gname . " */"
 normal! kk
endfunction

function! s:Switch_Source_Header()
 let l:curname = expand("%:r") " το όνομα χωρίς επέκταση
 let l:curext  = expand("%:e") " η επέκταση του αρχείου
 let l:myname  = ""
 if (l:curext == "c")
   let l:myname = l:curname . ".h"
 elseif (l:curext == "h")
   let l:myname = l:curname . ".c"
 endif
 if (filereadable(l:myname))
   exe "find " . l:myname
 endif
endfunction

" }}}
 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...