Vim parancsok gyűjteménye

 ( gbor | 2011. január 3., hétfő - 14:34 )

~Minden létező, non-windows os-en alapból* megtalálható karakteres felületű szövegszerkesztő, ami megkönnyíti az ember életét.

Ha már annyi parancs tartozik hozzá, akkor összegyűjtöm [idővel] - ha más is tud hozzáírni, akkor happy day.

kinézet:

VARÁZSLAT - RÖVID MAGYARÁZAT

[ code ] [ /code ] -ba rakjátok, ha lehet:

#########
wget -q "http://hup.hu/node/97489" -O - | sed "s/<pre class=\"bb-code-block\">/<pre class=\"bb-code-block\">################/g" | perl -E 'my $_ = do { local $/; <> }; say join qq!\n!, m!\Q<pre class="bb-code-block">\E\K(.*?)(?=\Q</pre>\E)!gs' | sed "s/&lt;/</g" | sed "s/&gt;/>/g" | sed "s/&amp;/\&/g"
#########

még egy dolog: a rövid magyarázatot magyarul írjuk [mert vannak, akik nem tudnak angolul, stb. nem én. ].

nem pont leírások linkelésére gondolok, hanem konkrét parancs/magyarázatra

lehetőleg ne zárjunk le commentet azzal, hogy válaszolunk rá, hátha az illető később módosítja, javítja, amit írt.

amit már egyszer leírtak, azt ne írja le más, viszont ha egyszer leírtál valami parancsot, akkor azt ne töröld.

köszi

*javítva - http://hup.hu/node/97489#comment-1193215

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

kezdem:

Használata:
Fájl megnyitása: vim valami.conf

ESC - normál módba való visszatérés [vagy Ctrl++], ahol pl.: a parancsokat adhatod ki [két ESC pl. akkor kell, ha v-módból való kilépésnél, ki van jelölve valami]
i - "beillesztés mód" bekapcs [INSERT mód], "normálisan gépelhetsz" 
I - ua., csak éppen a "whitespace" utáni résznél kezd a sorban [nagy " i "-betű] [tehát ha van TAB benne, akkor az után rögtön] [A - a sor legvégén kezd] 
v - visual mode [ki tudsz jelölni kurzorral is szöveget, de ha átírod a ".vimrc"-t, akkor egérrel is jelölhetsz] [V - kijelöli a sort] 

Mentés, megnyitás, stb: 
:q! - kilépés mentés NÉLKÜL&kérdezés nélkül 
:q - kilépés [ha nem módosítottuk a fájlt] 
:w - mentés 
:x - kilépés MENTÉSSEL&kérdezés nélkül [vagy :wq! vagy ZZ] 
:sav filenev - mentés másként "filenev" néven, és azt megnyitja 
:vsplit filenev - megnyit egy "filenev" nevezetű fájlt, függőleges vonallal elválasztva [:split filenev - vízszintesen] 
:tabnew filenev - ua., csak egy új fülön nyitja meg [Ctrl+PgUp-al mozogsz köztük, vagy ":tabn" és ":tabp"-vel] 
:call valami - a .vimrc-be írt funkció lefuttatása 

Kurzor irányítása: 
h,j,k,l - balra, le, fel, jobbra [vagy kurzorral is mozoghatsz, DE inkább ezt tanuld meg] 
Ctrl+f, vagy Ctrl+b - oldal ugrása Előre, vagy Hátra [PgUp vagy PgDown] pl.: beírod, hogy "10", utána PgDown gomb = 10 oldalt ugrik lefele 
G - a file végére ugrik [vagy :$] 
gg - a file elejére ugrik 
^ - az első nem "whitespace"-es karakteréhez ugrik 
0 vagy $ - sor elejére vagy végére ugrani [Home vagy End] 
w - egy szót előre [b - hátra] 
{ - ugrás a bekezdés elejére [ } - bekezdés végére] 
% - ha zárójelen állunk, átugrik a párjára [és fordítva] 
fu - előre az első "u" betűig [soron belül] 
Fu - vissza az utolsó "u" betűig [soron belül] 
:300 - a 300. sorhoz ugrik [vagy "300G"] 
20| - a 20. oszlophoz ugrik a soron belül 
Ctrl+g - megmutatja, hogy módosított-e a fájl + hol vagy a fileon belül 
w - a következő szó elejére ugrik [b - az előző szó elejére ugrik] 
* - átugrik a következő szóra, ami egyezik azzal, amin álltál, mikor megnyomtad a *-ot [# -al visszafelé ugyanez] 

Szerkesztés: 
o - új sor nyitása a kurzor alatt [O - a kurzor felett] 
x - kurzor alatti karakter törlése [3 karakter törlése pl.: 3x] [kurzor előtti karakter törlése: X] 
dw - kurzortól a szó végéig törlés, Beleértve a szóközt [5dw - ua., csak 5-ször.] 
de - kurzortól a szó végéig törlés, NEM beleértve a szóközt [mármint az utána levő szóközt] 
d$ - kurzortól a sor végéig törlés 
dd - sor törlése [2dd - 2 sor törlése pl.] [D - ua.] 
%d - fájl tartalmának törlése 
daw - kurzor pozíciótól függetlenül, ha a szón belül vagyunk, kitörli azt 
d} - törlés a bekezdés végéig [csak egy "ötvözés" volt] 
> - a kijelölt rész bentebb ""tolása"" [ - "kintebb"] - "olyan, mint egy csoportos TAB" :D 
c0 - a kurzor és a sor eleje közti szöveg átírása [c$ - -||- és a sor vége -||- vagy C] 
cw - átírás a szó végéig [3cw - a következő 3 szó átírása] [a "c" a "d" "párja", de nem csak töröl, hanem i-be is rak utána] 
r - a kurzor alatti karakter cseréje egy másikkal [replace] 
s - a kurzor alatti karakter helyettesítése bármennyi karakterrel [substitute, i módba tesz] 
3s - a következő három karakter helyettesítése bármennyi karakterrel [i módba tesz] 
d/valami - törlés előre, amíg "valami"-ig nem érünk, "valami" megmarad 
d?valami - ua., csak vissza, & a "valami" törlésre kerül 

Keresés: 
/valami - keresés előre [a "valami" szót] [szó helyet akár regexp-eket is írhatunk! :) 
?valami - keresés hátra 
n - ugrás a következő találatra 
N - ugrás az előző találatra 

Csere: 
:s/valami1/valami2 - az aktuális sorban a valami1 első előfordulását valami2-re cseréli 
:s/valami1/valami2/g - az aktuális sorban a valami1 minden előfordulását valami2-re cseréli 
:%s/valami1/valami2/g - a teljes fájlban 
:.,$s/valami1/valami2/g - a kurzor sorától a fájl végéig 
:1,.s/valami1/valami2/g - a fájl elejétől a kurzor soráig 
:%s/valami/\U&\E/g - a "valami" szót nagybetűssé alakítja mindenhol 

Indítás idejű kapcsolók: 

vim +1000 valami.conf - az 1000. sornál nyitja meg a valami.conf fájlt 
vim +/log - a "log"-szórészt tartalmazó sornál nyitja meg a fájlt 
vim -b +/"Continue" valamiprocess - Bináris fájlok szerkesztése, példában a "Continue" szónál nyitja meg a fájlt, átírhatjuk [de azért ha lehet az eredeti hosszal, azaz ez esetben 8 karakterrel, különben segfault :D] 

Egyéb: 
u - utolsó parancs visszavonása 
U - az egész sort helyreállítja 
Ctrl+r - ismét [mármint visszavonás ellentettje] 
yy - az egész sor a vágólapra [vagy Y] [5yy - öt sor a vágólapra] 
d5d [majd p] - kivágja a kurzortól számított öt sort, és a p-vel beillesztheted később azt a kívánt helyre [~ugyan ezt teszi a ":1,5m$" - utóbbi a fájl végéhez fűzi hozzá a pl.: 5 sort :)] 
p - vágólap tartalmának beillesztése a kurzor után, paste [P - elé] 
yyp - aktuális sor másolása&beillesztése [vagy Yp] 
y} - másolás a bekezdés végéig 
gU - a kijelölésben szereplő szöveget átkonvertálja nagybetűssé [vagy U] [gu - kisbetűssé] [de lehet most is ötvözni pl.: gU10l - a következő 10 karaktert nagybetűssé alakítani] 

Windows OS-en is megtalálható a vi (vim).

. - utolsó módosítás ismétlése

keresesnel nem kell a :, tehat nem :/valami es :?valami hanem /valami es ?valami

CTRL-C - ESC helyett hasznalhato (kenyelmesebben elerheto)

:!parancs - shell parancs vegrehajtasa (ha van kijelolve egy v. tobb sor, akkor azokra es a kimenetre csereli), pl kijelolsz tobb sort, majd: :!sort sorbarakja oket

-
Slackware current / OSX Snow Leopard

THX, ez nagyon hasznos volt nekem!
A szokás hatalma, nem hét!!!

:.!parancs - a parancs kimenetet beilleszti a kurzorhoz

:wq

Van beépített sort is, tehát elég a :sort.

csak pelda volt :)
de egyebkent a topicba siman illik a :sort (csakugy mint peldaul a :make)
-
Slackware current / OSX Snow Leopard

Viszont a beepitett sort kevesbe... hmm... okos.
--
Blog | @hron84
Üzemeltető macik

Viszont nagyon sok esetben nem is kell több, mint amit tud.

ci" - idezojelek kozotti szoveg cserelese, ugyanigy hasznalhato di" a torleshez, ci( zarojelekhez, stb.
ca" - hasonlo az elozohoz annyi kulonbseggel, hogy az idezojelet is csereli/torli
cit - ez is hasonlo az elozohoz, viszont ez html/xml file-oknal hasznalhato, tagek kozotti szoveg cserejere
cat - lasd fentebb, ez is html/xml tagek szerkesztese kozben hasznos, ez a taget is lecsereli

--
HUP Firefox extension

ezekről nem is tudtam, nagyon jó, köszi :)

Ehhez kell valami plugin, nem? Ha igen, melyik?

---------------------------------------------------------------------------------------
Unix is simple. It just takes a genius to understand its simplicity. — Dennis Ritchie

Nem kell, tovabbi informaciokert lasd :help text-objects
--
HUP Firefox extension

Bovitenem meg >i} paranccsal. Igy lehet pl kodblokkokat indentalni. Termeszetesen a kisebb-nagyobb jel cserelheto, valamint az i is a-ra es meg a zarojel is a megfelelore.
--
HUP Firefox extension

sign up
-------------
Használj GoboLinuxot!
http://mek.oszk.hu/05800/05895/
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó

+1
int getRandomNumber() { // ←ez itt már az aláírásom
        return 4;//szabályos kockadobással választva.
}               //garantáltan véletlenszerű. xkcd

+1

+1

+1.

+1
---------------------------------------------------
Talisker Single Malt Scotch Whisky aged 10 years :)

s

+1

----------------------------
színes ingyen domain domain

+1

Fuszenecker Róbert

+1

"lehetőleg ne zárjunk le commentet azzal, hogy válaszolunk rá, hátha az illető később módosítja, javítja, amit írt."

köszi szépen srácok...

most hogy fogok leiratkozni? :D

+1 ide is, csakazértis!
:)
--
Fight / For The Freedom / Fighting With Steel

+1

+1

+1

+1
--
TH

+1

+1

--
[citation needed]

+1

+1

+1

+1


Sic Transit Gloria Mundi

sub (combo breaker)

+1
csak, hogy erre is legyen válasz :D

hasznos, koszi

Tényleg jó topik, egy dolog amit nem láttam:

kijelölni például egy zárójelen belüli szöveget vi( ha a zárójelen belül állsz, és command módban vagy.
v mint visual, i mint inner és utána hogy mit. Lehet w is, akkor az egész szót jelöli ki.

mar volt, bar nem v-vel (kijeloles) hanem c-vel (change)
-
Slackware current / OSX Snow Leopard

Na gyertek, mutassatok meg hogy mennyire tanultatok meg: VimGolf

ezjó :)

hmm. jó 5let

Ha esetleg elkerülte volna a figyelmetek, van ilyen is: http://vimgolf.com/

könyvjelző
--
unix -- több, mint kód. filozófia.
Life is feudal

++

hat mar szep szammal osszegyultek a parancsok / kombok mehetnek hupwiki-be
___
info

Nem tudom, hogyan gondoltad, de a Vim szócikkbe beleraktam egy linket ide.

:vs , :Vex   -    vertical split
:sp , :Hex   -    horizontal split
^[gt           -    tabok kozotti valtas
:tabnew     -    new tab
:n               -    next file (vim a b)
ctrl+p        -    code kiegeszites

___
info

A split parancsoknak fajl is megadhato parameterkent, es akkor azt a fajlt nyitja be a megnyilo uj pufferbe.
--
Blog | @hron84
Üzemeltető macik

Windowba. a megnyilo uj windowba.

:set paste                -      beillesztes eseten formazas megtartasa
^w + kurzor nyilak  -      tobb split eseten kozottuk mozgas, akar vimdiff-ben is

___
info

@pinyo_villany kurzor helyett szerintem ^w [hjkl] sokkal szebb. :).

Plusz, ha mar spliteketrol beszelunk:

^ws - split horizontal
^wv - split vertical

Sot, igazabol a :h CTRL-W a leghasznosabb.

--
HUP Firefox extension

Insert mode-ban:
ctrl+n - File-ban található ismétlődő szavak kiegészítése.

De pl. ha .py fájlban importálsz egy modult, akkor a modul függvényeit is
kiegészíti. A többi programnyelvnél nem tudom mit csinál, ki kéne próbálni.

-----------
"Generally, Russian technology assumes dumb machines and smart humans, not the other way around." -- The Russian Tea HOWTO

gf
Normál módban a kurzor alatti fájlt nyitja meg (ha tudja). Imádom.

és hogy lehet visszalépni az előző fájlba? :)

:r filenev.txt - a megadott file tartalmat beilleszti
-
Slackware current / OSX Snow Leopard

kell

parancs modban (kettospont utan) ctrl-v <specialis billentyu v. billenyukombo> "szo szerint vetel"

pl. :%s/bela/<ctrl-v><tab>/g

Minden belat tab karakterre cserel


:map <billentyu> <billentyusorozat>
billentyu megnyomasahoz billentyusorozat hozzarendelese normal modban. Lehet rekurziv is, pl:

:map e :%s/x/y/g<ctrl-v><enter>:wn<ctrl-v><enter>e

e gomb megnyomasara minden x-et y-ra cserel az egesz fajlban
fajlt menti (:w) majd kovetkezo fajlra ugrik (:n, egyutt :wn)

e, tehat kezdje elorol az egeszet

hasznos ilyen vim konyvtar/*.kiterjesztes tipusu dolgokhoz.

:imap <billentyu> <billentyusorozat>
ugyanez inzertmodra

pl. :imap <ctrl-v><ctrl-p> <ctrl-v><esc>:s/.*/<p>&<\/p>/<ctrl-v><enter>i

Az epp szerkesztett sort html <p> tagek koze rakja.


q<billentyu> <dolgokcsinalasa> q
makro rendelese billentyuhoz

(fontos: a masodik q-nal command modban kell lennunk)

majd:
@<billentyu>
makro lejatszasa billentyun

:colorscheme <tab> szinsema allitasa
:syntax on
:set filetype=<tipus>
:set softtabstop=4 - tab szelessege
:set shiftwidth=4 - indentalas szelessege
:set expandtab -> meglevo tabokat space-re konvertalja

vizualis modban > (kacsacsor) : indentalas

:paste - automatikus indentalas es egyeb viccek kikapcsolasa
:nopaste - ezek visszakapcsolasa

set incsearch -- inkrementális keresés, miközben gépelem a keresendő szöveget, már keres, nem vár ENTER-re
set hlsearch -- és meg is mutatja :-)
set ruler -- mutatja a sor- és oszlopkoordinátákat

Fuszenecker Róbert

Be szoktam állítani, hogy egy gombnyomásra tudjon XML-t rendberakni. (akinek így ismerős: autoident)

:map <F2> <Esc>:1,$!xmllint --format -<CR>

En tobbek kozott ezeket irtam a .vimrc-mbe:


" automata zarojelek
inoremap ( ()<Esc>i
inoremap " ""<Esc>i
inoremap ' ''<Esc>i
inoremap [ []<Esc>i
inoremap } {}<Esc>i
inoremap { {<Esc>o}<Esc>O

" pl stringek felsorolasanal nagyon hasznos
" us billentyuzeten alt gr + ;(é)
inoremap » <Right>,<Space>

---------------------------------------------------------------------------------------
Unix is simple. It just takes a genius to understand its simplicity. — Dennis Ritchie

Ez nagyon jó. Én még ezt szoktam:

" vimrc-be: C/C++-ban eleg #i -t és #d -t gepelni es kiegesziti
iab #i #include
iab #d #define

@@ - utoljara vegrehajtott makro futtatasa
-
Slackware current / OSX Snow Leopard

Parancs módban:
:e .
könyvtárstruktúra megnyitása, tallózásra

vow

Hoppá, ez nagyon jó!

hát van, aki ezt nem ismeri? netrw FTW. (asszem így híjják) SSH-n, FTP-n is ezzel lehet okoskodni.

Azt hiszem ez ugyanaz:

" Aktualis konyvtart listazza
:E

Hogy lehet kikapcsolni a backup fájlokat? Win alatt nem akar működni, hiába van benne a vimrc-ben:

set nocompatible
set nobackup
set nowritebackup

--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

pedig ezek utan nem szabad neki...
biztos hogy jol nevezted el a file-t? windows alatt nem .vimrc hanem _vimrc!
-
Slackware current / OSX Snow Leopard

Jaja, a gyári rc-t manipulálom, más beállítások működnek. Annak igazából még nem néztem utána, hogy milyen kapcsolókkal van lefordítva, de mivel minden fórumozó, aki ugyanezzel próbálkozott sikerrel járt, így gyanítom, hogy nem a binárisban van a hiba, csak én nézek félre valamit...
Ha gondolod itt az rc, nézegesd: http://pastebin.com/kzQ2UBsY
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

A source direktivak a vegen esetleg?

Köszi, valóban ez volt a hiba. :)
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

Ez igy nem igaz, 7.3-nal tuti mukodik a .vimrc is meg a _vimrc is, sot a .gvimrc es a _gvimrc is.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

Vimrc-be való hasznosság:

" Sorvegi whitespace torlese; a fajl vegen mindenkepp csak egy ures sor
" legyen ( vim alapbol tesz egyet ), majd kurzor visszaallitasa eredeti helyere.
" ( :s miatt elmozdul )
autocmd bufwritepre * let save_cursor = getpos( '.' ) |
                    \ silent %s/[ \t]\+$//ge          |
                    \ silent %s/\n*\%$//e             |
                    \ call setpos( '.', save_cursor )

És még egy dolog, ami számomra hasznosnak bizonyul, az a tobbsoros mintailleszkedes.

:%s/EZ\_.AZ//   EZzel kezdve minden sort torol AZzal bezarolag. ( bovitett * )

--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

C-X C-F - automatikus fájlnév-kiegészítés insert módban

xp - normál mód, két karakter kicserélése (elgépeléseknél hasznos)
C-G - normál mód, fájlról némi információ

mX - normál mód, könyvjelző (mark) létrehozása (X lehet a-zA-Z)
'X - normál mód, az X könyvjelzőre ugrás
:marks - könyvjelzők listája
:y X - az X regiszterbe másolás (X megint a-zA-Z)
:"X p - az X regiszterből beillesztés (P-vel szintén)

en a ZZ parancs hive vagyok :D
(illetve ugyanez mentes nelkul ZQ)

es akkor meg mondja valaki, hogy nem lehet kilepni a vimbol, egy csomo megoldas van ra :D
-
Slackware current / OSX Snow Leopard

egyik legalapvetobb kimaradt:

^j ^m - "kocsivissza soremeles"

az entert - foleg bizonyos bill.-eken - kicsit nehezebb elerni mint ezeket, raadasul nem mindig jelentik ugyanazt
en mindig ezeket hasznalom... (konzolban is, emacs-ben is, stb)

Egy rendes statusline-ból szerintem megtudhatod, hogy épp mit is 'jelent' az Enter. Pl.:

set laststatus=2                " Mindig mutassa a statuszt.
set statusline=%F%m%r%w\ [%{&fenc}\ %{&ff}]%=[HEX:\ \%02B]\ [%4v\ %4l\ %3p%%]

No, itt a fileformat ( ff ) megmondja, hogy csak soremeles ( LF ), vagy kocsi-vissza ( CR ) is odakerül-e a sor végére.
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

amit irtal az is nagyon jo h itt all, de nem erre gondoltam:
a ^j es ^m mas funkciot valosithat meg
pl parancs modban a ^j a kovetkezo sorba lep de ugyanabba az oszlopban marad, mig a ^m a kovetkezo sor elso aszem nem white space karakterere ugrik
amugy nemtudom h hol es miben kulonbozik meg a ketto, sokat meg nem szerkesztettem forrast vi-al(eljon annak is az ideje), emacs-ben pl a ^j behuzassal(indent) csinal uj sort, a ^m-nel pedig az uj sor elejen lesz a kurzor, slime-ban ^m: evaluate, ^j: new line, lisp interaction mode-ban ^j: evaluate, ^m: new line
arra gondoltam h biztos a vi-nal is ennyire kulonbozo es egyenrangu(ugy ertem az egyik nem elsodlegesebb a masiknal mintha C-enter -rol es enter-rol lenne szo) a ketto, de mindenesetre esetenkent biztosan fannak funkcionalis kulonbsegek

szoval vi-ban nemtudom mennyire van igy, de emacs-ben a ^j es ^m (C-j C-m) inkabb olyan mintha lenne enter1 es enter2 (es tok kenyelmes :) )

+s

hjkl

--
NetBSD - Simplicity is prerequisite for reliability

HJKL? :)

__ VIMRC __

inoremap    <expr>     <C-H>    CommentHeader()

" -- COMMENTHEADER --
" Insert modban a hivasa utan megadott karaterrel kitolti a sor veget.
" Pl.: ^H- hatasara a kurzor poziciojatol textwidth-ig kotojelek lesznek.

function CommentHeader()
    let line = getline( '.' )

    let trail   = ''
    let trailch = nr2char( getchar() )

    let i = len( line )
    while i < &textwidth
        let trail .= trailch
        let i     += 1
    endwhile

    return trail . "\r"
endfunction

--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

com! -nargs=? -range Li if <q -args>=="o"|,s#\(.*\)#<li>\1</li>#|s#$#</ol>#|s#^#<ol>#|elseif <q -args>=="d"|,s#\([^:]*\):\(.*\)#<dt>\1</dt><dd>\2</dd>#|s#$#</dl>#|s#^#<dl>#|else|,s#\(.*\)#<li>\1</li>#|s#$#</ul>#|s#^#<ul>#|endif

Első Vim parancsom, azóta se készült belőle több. Ha kijelölsz egy szöveget, akkor HTML formátumú listát gyárt belőle. Ha nincs paramétere, akkor UL tagek közé zárja, ha "o" paramétert kap, akkor OL tagek közé.
Ha "d" a paramétere, akkor az ilyen formátumú listát formázza meg DL tagek között:
fogalom1:definíció1
fogalom2:definíció2

Ezt a .vimrc-be kell rakni. Amúgy nem sűrűn használom. Cserébe minden kevésbé tech-savvy embert megrémít a kinézete, azért már megérte :D

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

__ VIMRC __

Gcc hibaüzenetek kiírása a hibaablakba, anélkül, hogy a makeprg-t meg kéne változtatni. ( így a makefile és a különálló források is lefordíthatóak )

" Make hiba eseten nyissa meg a hibaablakot.
autocmd QuickFixCmdPost *       botright cwindow

command     -nargs=*   Gcc      w | call GccCompile( '<args> -o %:r %' )

" -- GCCCOMPILE --
" Makefile nelkuli forditas.

function GccCompile( args )
    let old_make = &makeprg
    let &makeprg = 'gcc -Wall ' . a:args

    make

    let &makeprg = old_make
    return
endfunction

Használat:
:Gcc [kapcsolók és egyéb források]

Ui.: Bocsi, hogy kicsit off hozzászólások, mivel nem alap parancsok, de Vim-hez kapcsolódnak.

--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

__ VIMRC __

" Megjelenes beallitasa a terminal meretei szerint.
autocmd      VimEnter        *       call AutoLayout()

" Vertikalis scrollbar kikapcsolasa - TlistToggle miatt elcsuszik a margo, ha
" nincsenek kikapcsolva.
set guioptions-=r                       
set guioptions-=l
set guioptions-=R
set guioptions-=L

" -- AUTOLAYOUT --------------------------------------------------------------
" Ures ablak nyitasa a jobb oldalon ( vagy ha van Tlist, akkor azt nyitja
" meg ), hogy jelolje a szovegszelesseget, ha a textwidth kissebb, mint a
" terminal szelessege. Ezenkivul ha van meg eleg hely a sorszamoknak, akkor
" azokat is jelenitsuk meg.
" Ismert hibaja, hogy nincs felkeszitve a terminal atmeretezesere.

function AutoLayout()

    " Ha a szovegszelesseg be van allitva es ez kisseb az ablak / terminal
    " meretenel, csak akkor van hatassal.
    if (&textwidth == 0)
    \  || (&textwidth > &columns)
        return
    endif

    " Dokumentum + sorszamozas szelessege.
    let margin = 0

    " Ha nincs megadva a sorszamozas szelessege, akkor beallitjuk azt.
    if &numberwidth == 0
        let &numberwidth = 5
    endif

    " Ha a sorszamozas is belefer a terminalba, akkor kapcsoljuk be.
    " A szelesseghez hozzaadjuk a sorszamozas es a szoveg kozti 1 karakter
    " szeles elvalasztot is.
    if (&textwidth + &numberwidth) <= &columns
        set number
        let margin += &numberwidth
    endif

    let margin += &textwidth

    " Ha van Tlist, es van meg legalabb 4 ( Tlist minimum szelessege ? ),
    " vagy ( ha a winminwidth nagyobb, akkor ) winminwidth szelessegu hely, es
    " meg 1 a vertikalis ablakok elvalasztojanak, akkor a Tlist-et nyissuk
    " meg, egyebkent meg egy ures dokumentumot rakjunk jobb oldalra.
    " Azert szamit a winminwidth, mert kihatassal van a Tlist-re:
    " ha bezarjuk azt, majd ujra megnyitjuk, akkor a winminwidth felulbiralja
    " az altalunk beallitott Tlist_WinWidth szelesseget.
    if exists( ':TlistOpen' )
    \  && ((margin + (&winminwidth < 4 ? 4 : &winminwidth) + 1) <= &columns)
        let g:Tlist_WinWidth = &columns - margin - 1
        TlistOpen

        " Visszavaltas az eredeti dokumentumra.
        if g:Tlist_Use_Right_Window == 1
            wincmd h
        else
            wincmd l
        endif
    elseif (margin + 1) <= &columns
        " Vertical split es uj dokumentum nyitasa a jobb oldalon.
        botright vnew

        " A 0 ablakszelesseget is engedelyezzuk az ablak letrehozasanak
        " idejeig, mert az ablakok kozti elvalaszto 1 karakter szeles, igy ezt
        " is hasznalhatjuk margonak.
        let old_wmw      = &winminwidth
        let &winminwidth = 0

        " Mivel nem engedi a 'vertical resize' utan valtozok beirasat, igy egy
        " sztringbe mentem a parancsot. ( ha valaki tudja, hogy hogy lehet
        " helyben kiertekelni az osszeget, az kerem kozolje )
        let resize_command = 'vertical resize ' . margin

        " Valtsunk a bal oldali ( eredeti ) ablakra es meretezzuk at.
        wincmd h | exe resize_command

        " Visszaallitjuk az ablakok minimalis meretet az eredetire.
        let &winminwidth = old_wmw
    endif

    " Fixaljuk a margo helyzetet, de ha pl. becsukjuk a Tlistet, atmeretezzuk
    " a terminalt, majd megint kinyitjuk, akkor nem a megfelelo helyre kerul.
    set winfixwidth

    return
endfunction

--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

... asszem kicsit túlbonyolítottam a dolgot, íme egy egyszerűbb megoldás, ami ugyan kicsit 'weird', de szerintem használható, mert minden buffer szövegszélességéhez egyénileg igazodik. Kíváncsi vagyok, ti is használhatónak találjátok-e?

__ VIMRC __

" Automatikus ablakszelesseg a textwidth szerint.
autocmd      BufWinEnter     *       call AutoWidth()
autocmd      WinEnter        *       call AutoWidth()

" -- AUTOWIDTH --------------------------------------------------------------

function AutoWidth()

    if &textwidth == 0
        return
    endif

    if winnr() == bufwinnr( g:TagList_title )
        setlocal modifiable
        let &winwidth = g:Tlist_WinWidth
        setlocal nomodifiable
        return
    endif

    let &winwidth = &textwidth

    if &number
        let &winwidth += &numberwidth
    endif

    let wincmd = 'vertical resize ' . &winwidth
    exe wincmd
    set winfixwidth
    return

endfunction

--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

ma pont kellett, ugyhogy berakom ide is

mindenki kedvenc vindoza szereti 2byte-os kodolassal tarolni a file-okat, mert miert is ne foglaljuk duplaannyi helyet mint amennyit kell, ugye...
alapbol (nalam legalabbis) windows alatt nem nyitja meg ezeket helyesen a vim
a megoldas a kovetkezo:

file-t megnyitni vimmel, majd a kovetkezo parancs kiadasa:

:e ++enc=ucs-2le

ettol hirtelen megjavul a file, es mar normalisan szerkesztheto \o/
-
Slackware current / OSX Snow Leopard

Nekem linux alatt a .vimrc-ben a következő sor oldott meg minden karakterkódolási problémát:

set fileencodings=utf-8,latin2

A sorrend fontos, abban a sorrendben próbálkozik.

ggVG=     -   reindent es retab a file-ra cmd modban

___
info

gk; gj illetve g{up} g{dn} - hosszú sorokban a sorok törésein belül lépked
gq - kijelölt rész formázása (pl. sortörés)
CTRL-v - visual blokk (cmd módban), így lehet táblázatkezelõt csinálni a vimbõl. Pl. 0CTRL-vjjjIE az összes kijelölt sor elejére beteszi, hogy E
`. - az utoljára editált ponthoz ugrik vissza
`[ - a beillesztett szöveg elejére ugrik
`] - a beillesztett szöveg végére ugrik
g CTRL-g - info a bufferrõl
CTRL-a, CTRL-x- számot növel/csökkent. Én decimálisra használom, ezért kell hozzá: set nrformats=

Ez lehet környezetfüggõ, nekem Gnome/xfce alatt:
"+p es "+y - jobb gombos copy/paste regiszterbol/be
shift+insert - betesz a clipboardbol,
visual mód pedig pedig betesz a clipboarba (utána egér középsõ gomb visszaadja máshol)

Insert módban:
CTRL-p - kiegeszit, ha már volt úgy induló szó
CTRL-x CTRL-l - line complete, ha már volt úgy induló sor
CTRL-x CTRL-f - filenév kiegészítés aktuális könyvtárból
CTRL-v - ascii kódokat közvetlenül beír insert módban.

/CTRL-r CTRL-w - keresés mezõbe behúzza a cursor alatti szót
/CTRL-r" - az utoljára másolt szöveget behúzza a keresés mezõbe
:CTRL-r" - az utoljára másolt szöveget behúzza a cmd mezõbe

YankRing kiegészítõ:
http://www.vim.org/scripts/script.php?script_id=1234
CTRL-p, CTRL-n - váltogatja az utoljára beillesztett dolgokat

:tabv utasítás definícióm a .vimrc-bõl (a :tabe mintájára):

cabbrev tabv tabnew\|setlocal nomodifiable\|view

ezzel :tabv - új file-t nyit meg új tabban, read only és nomodifiable módban

.bashrc-be, mert nekem már a less is vim:

less(){
if [ $# -ne 0 ]; then vim "+noremap q :q<CR>" "+noremap <Space> <PageDown>" -p -M -R "$@"
else vim "+noremap q :q<CR>" "+noremap <Space> <PageDown>" -p -M -R -
fi
}

Lehet ám a bash-t is vim módban szerkeszteni, ez kell a .bashrc-be:

export EDITOR=vim

Ekkor bashban esc után élnek a vim parancsok, illetve v -re nálam behúz egy vimet, hogy szerkesszem a parancsot.

Ez pedig több filet egyszerre külön tabokban nyit meg, szintén bent van a .bashrc-mben:

alias vim="vim -p"

És: ismeritek a vimperator plugint firefoxhoz?

hogy lehet a zárójelek párjára, blokkok másik végére ugrani?
a '%' nem működik jól:
fuggveny(pam,param,"string)blabla",2);

(ha számít a nyelv konkrétan mondjuk js-ben:) esetleg json-ban:) )

99%-ig korrekt 7.1*-ben:
- ha egy sorba írom, mint itt, akkor a sztringből nem lát kifelé zárójelpárt, és a sztringben lévőt sem hiszi a függvényt nyitó párjának,
- ha külön sorba kerül a fv. neve és a sztring argumentum, akkor a sztringben állva a fv nyitóját a sztringbeli párjának veszi, de fordítva nem.
Szóval nem tökéletes, de érdektelen helyzetben vét.

*VIM - Vi IMproved 7.1 (2007 May 12, compiled Feb 11 2008 13:58:05)
Included patches: 1-242

látja, (highlight), de nem oda ugrik
amíg egy sorban van nem is kell ez a funkció mert látom szemmel is, szóval pont hogy az az 1% számítana, de itt már egy sorban sem jó
asdf(['as(','df)','])']);

konkrétan hosszabb json-ban teljesen használhatatlan, épp amikor kellene

Aha, ez a példa az összekuszált hamis párokkal szemléletesebb - ez tényleg megvadítja az ugrásokat.

Szerintem a highlighternek nem sok koze van ehhez. Matchit plugin telepítve van? Az segithet ilyeneken.
--
HUP Firefox extension

" matchit.vim: (global plugin) Extended "%" matching
" Last Change: Fri Jan 25 10:00 AM 2008 EST
" Maintainer: Benji Fisher PhD
" Version: 1.13.2, for Vim 6.3+

highlight alatt nem a syntaxhigltghtot értem hanem a kurzor mozgtásakor automatikusan kiszínezi a hátterét a _jó_ zárójelnek, bár ha a hamis zárózárójelen állok akkor is kiszínezi a nyitót, de ez már majdnem jól működik:
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar
" Last Change: 2008 Sep 03

csak épp ugrani nem ugrik a matchit meg rosszul ugrik

Nem tudom, melyik vim-et hasznalod, esetleg ujabb vimmel? Nekem 7.3-mal teljesen jol mukodik a matcheles.
--
HUP Firefox extension

7.3 windows

f*ck, nem volt telepítve a matchit, most már működik :)

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

http://www.youtube.com/watch?v=_galFWwSDt0

http://vim.wikia.com/wiki/Vim_Tips_Wiki

Aktuális kedvenceim:

:sort

Ex módban adott regex-et tartalmazó sorok törlése/cut regiszterbe:

:let @a=''g/pattern/d A

[+]

'' - ez ket db szimpla ' legutolso poziciora ugras (pl. kereses, vagy bookmarkra ugras utan)
"*y - kijelolt szoveg masolasa clipboardra (windowson is)
"*p - clipboard tartalmanak beillesztese (windowson is)

-
Slackware current / OSX Snow Leopard

Vágólapra másol linuxon. Na de melyikre? :) Ez a középső egérgombbal beilleszthetőbe pakolja.

Nekem ezt egy szimpla visual is megteszi, miután második "v"-vel kikapcsoltam. (Visual line és visual block is tudja.)

^e - gordites le (vagy fel, nezopont kerdese)
^y - gordites fel (vagy le, nezopont kerdese)

zz - a sor amiben a kurzor all az ablak kozepen lesz
zt - a sor amiben a kurzor all az ablak elso sora lesz; t mint top
zb - a sor amiben a kurzor all az ablak utolso sora lesz; b mint bottom
zh, zH, zl, zL - scroll egy karaktert/felkepernyot balra/jobbra

M - kurzort az ablak kozepere
L - kurzort az ablak aljara
H - kurzort az ablak tetejere

11j, 11k - csak sajat szokas, nalam a kepernyo felbontasa es a betumeret miatt nagyjabol negyedkepernyot fel/le

Elnézést, nem olvastam végig, remélem még senki nem írta le...

inkrementális backup minden mentésnél (gyakran szörnyen hasznos volt...)

.vimrc-be

  augroup vimrcEx
    autocmd BufWritePre * let &bex = '_' . strftime("%y_%m_%d_%H%M%S") . '~'
  augroup END

set backupdir=~/.vim_backup/

így értelem szerűen a ~/.vim_backup könyvtárba kerülnek szépen a fileok... Nem eszik olyan sokat, de nagyon hasznos akkor 1x... :)

másik amit gyakran használok:

:g/alma/d --> minden sor törlése amibe van alma...
:v/alma/d --> minden sor törlése amibe nincs alma...

Így is lehet (a 'Enter' Enter lenyomást jelent):

1G!Ggrep -v alma'Enter'
1G!Ggrep alma'Enter'

a lehetőségeink innentől határtalanok, pl.:

1G!Gsort'Enter'

'Egy program egy dolgot csinál, de azt jól.'

Ahh az összes kedvencemet irta mar valaki.. marad a :Sex ;)

Na jó itt van még néhány trükk:

readonly fileok írása:

:w !sudo tee % > /dev/null

Ezekkel visszalehet hozni azt is amit már undo nem tud:

g- -- visszalép egy régebbi verzióra
g+ -- előrelép egy újabb verzióra

paste trükköt fentebb már irták, de mégegyszerűbb ha bevan állítva pl F5-re:

nnoremap  :set invpaste paste?
imap  
set pastetoggle=

Tab-nak nemsok haszna van normal és visual módban ezért én indent-re használom:

nmap  ==
vmap  =

:r-t nemcsak fájlok beolvasására lehet használni hanem parancskimenekhez is:

:r! date
:.!date  -- az aktuális sort cseréli le

^R insert módban:

% - aktuáls file neve
= - mini számológép ;) (akár hexet is lehet használni 0x előtaggal)
. - utoljára beillesztett szöveg
+ - rendszer vágólapján lévő szöveg
* - X11-es vágólap (kijelölés) -- bár ehhez IMHO egyszerűbb egy középső gombot nyomni egéren
/ - utolsó keresési minta
: - utolsó parancs

subscribed

sub

Ha valahol egy nagyon bonyolult parancsot látsz, ez segíthet dekódolni:

https://github.com/pafcu/Vimsplain

A sort akár domain-név szerint is sorba tudja rendezni az e-mail címeket:



hibas sor


ez is egy hibas sor

:sort /^[^@]\+/

hibas sor
ez is egy hibas sor




Magyarázat: a megadott regex-re illeszkedő sor eleji részeket figyelmen kívül hagyja, a mintára nem illeszkedő sorokat (jelen esetben a hibás sorok) pedig eredeti állapotukban hagyja, elkülönítve a rendezett soroktól. (itt a hibás sorokat azért nem rendezte, mert azok csak [^@] karakterből állnak, így figyelmen kívül hagyta őket)

További infó:
:help :sort
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

“1000k”-t beírva - visszaugrik 1000 sort
“1000” után enter - előre ugrik 1000 sort

--
https://www.youtube.com/watch?v=K_lg7w8gAXQ&feature=player_detailpage#t=46s

<troll>
A vim elviselésével járó agykárosodás sokszorosan meghaladná az összes munkaidőt és fáradságot, amit eddig és ezután a joe telepítésére fordítottam és fordítani fogok, bárhol legyek is.
</troll>

Valószínűleg a "bárhol" elképzelésekor nem elég erős a fantáziád.

Egyetértek, valószínűleg így van. Ahol nem futtathatok fordítót, ill. ahol egy joe-t nem bír el a helyi fordító, ott én nem dolgozom.

Szerk: nem, fordító alatt nem kizárólag gcc-t értek.

Lesz még olyan is, hogy gcc is van, futtathatod is, éppen csak módosítani kéne valamelyik .h-ban vagy .c-ben egy-két apróságot ahhoz, hogy minden gromek legyen.
Mire kikeresed more-ral/less-szel, hogy mit és megírod sed-ben, már ott is vagy, hogy az ehhez szükséges vimes tudomány felét ugyanúgy használnod is kellett.

Valamelyest egyetértek a Vim "agykárosító" hatásával - a módok közti váltogatás és az egy-két betűs parancsokkal való munka nálam egy kis káoszt eredményezett: pl. egyéb texteditorokban és szövegszerkesztőken is a :w parancsra áll a kezem, ha menteni akarok, néha meg úgy nézhetek ki a sok parancskiadási szándékból elkövetett félregépeléssel, mint aki össze-vissza kapkod a billentyűk között, mert nem találja amit keres... Tény, hogy kicsit körülményes, de az is igaz, hogy némely tekintetben űbereli a kattingatós társait.
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

Meg kell tanulni a vim-mel bánni, és utána nem lesz agykárosodásod. A tudásért meg kell szenvedni :)

Az Emacs learning curve szempontjából amúgy is neccesebb… ☺

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Ah, debian logó :)

A vimmel bánni? Rongyra szórod, és súrol, súrol :)

(Nagyon fiatalok kedvéért: vimnek hívták Magyarországon a súrolóport a hatvanas, hetvenes években. Aztán, ahogy a nyolcvanas években kinyílott a világ, már kapható volt másmilyen is.)

emacs-et, vi-t inkrementalisan kell megismerni

:set rnu Sorszamot a kurzhoz kepest relativen mutatja. Megkonnyiti a navigalast, igy konnyu kitalalni, hogy pl. a 10j kell ahhoz, hogy a megfelelo sorba ugorj (ami jelen esetben eppen 10 sorral van lejjebb az aktualisnal).

--
HUP Firefox extension

Nem vagyok benne biztos, hogy jó verziószámot mondok, de asszem ez a 7.3.46-tól lett bevezetve. Csak azért mondom, hogy aki egy release-el le van maradva, az ne csodálkozzon, ha a Vim nem ismeri ezt az opciót...
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

Multkor epp kellett:

:%!xxd      - hex editor on
:%!xxd -r   - hex editor off

shift+d # kurzortól számítva törli a hátra lévő sort

--
https://www.youtube.com/watch?v=K_lg7w8gAXQ&feature=player_detailpage#t=46s

... új topic-ba rakva ...
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

Gvim - Sotet hatter szinsema valtas nelkul

http://hup.hu/node/102993

Linux oktatás

ctrl+ws - split windows
ctrl+ww - switch between windows
ctrl+wq - quit a window

ctrl+wv - ablak felosztása (csak függőlegesen)

:vsplit
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

- :split
-
- :wq
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

A :wq nem ide illik, úgy érzem :)

dash billentyuparancsaihoz mellekeltem kettospontos parancsokat.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

Épp ezért.
A :wq a kiír-kilép (write-quit). Mármint a vim-ből.
És nem ablakműveletet csinál (már persze a szó legszorosabb értelmében, mert az egész programból való kilépés végülis az összes ablak bezárását eredményezi :)). dash pedig ablakműveletekhez kapcsolódó parancsokat (hotkey-eket) írt.

mielott leszolod a masikat, legalabb nezz utana hogy nem beszelsz-e hulyeseget (ebben az esetben DE :P)

egyebkent en :wq helyett a ZZ parancsot szoktam hasznalni
illetve :q! helyett a ZQ -t
-
Slackware current / OSX Snow Leopard

Ehm, nem. A :wq az az _ablakot_ zárja be, nem pedig a vim-et. Aki egyablakos vim-et használ, annál nyilván a kilépés fog érvényre jutni, mert ablak nélkül a vim nem üzemképes.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

Hopp, megakulpa...

De akkor is, hogy védjem a mundér becsületét:
a :wq -ban a w a "write", míg a c-wq -ban pedig a w a "window" :)
És igaz, a vim-et csak utolsó ablak esetén zárja be a ":wq"(ezt tényleg benéztem hirtelen, a :wqa zár mindent), de akkor ír is, míg c-wq-nál utolsó ablakot csak akkor lehet bezárni, ha nem módosult a fájl.
Na, mindegy, legyen 1-1 (nagy kegyesen :)).

En mar hozzaszoktam a :wq -hoz. amikor zarok, akkor egyben ugyis mentek is.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

[feliratkozás]

.vimrc-be

" mondatok első szavának nagybetüsítése
nnoremap <F2> ggvgU:%s:\([.?!] \)\(\w\):\1\u\2:gc<CR>

---------------------------------------------------------------------------------------
Unix is simple. It just takes a genius to understand its simplicity. — Dennis Ritchie

:w !sudo tee %

Olyan fájl mentése melyre nincs írási jogunk.

hat ez jo :)
en meg eddig ugy csinaltam h mentes home konyvtarba aztan kilepes utan feluliras az eredetivel
ez a tipikus megoldas
de ezentul mar nem igy kell csinalnom
ez jo ;)

> de ezentul mar nem igy kell csinalnom
De, így kell. Én is már több éve ismerem ezt a megoldást, és hiába tudtam megjegyezni ennél bonyolultabb kombinációkat, ez egyszerűen nem megy :)

set wildmode=longest,list
set wildmenu

Bash-szerűbb kiegészítés fájl megnyitásakor.

Azt írta gbor hogy a nyilak helyett érdemesebb a hjkl -t használni a kurzur mozgatásához. Persze idővel azt tapasztaltam hogy inkább csak fel-le mozgásra lehet szükség az egyéb hasznos parancsoknak köszönhetően.

Utóbbitól függetlenül, I módban, hogyan oldjátok meg hogy NE a nyilakat kelljen használni?

Tipp: ESC hjkl i :)

Imádom a vim-et, mindent abban írok, de kövezzetek meg nem szoktam rá a hjkl -re, maradtam a nyilaknál. Nem találom kényelmetlenebbnek.

Én sem használom. Nem is áll kézre: akkor már inkább:

   o
 j k l

csak az "o"-t át kell tenni máshova :P Mondjuk ezt sem használnám...

WASD lenne a tuti, nem? :-)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

Most emiatt akarok egy szövegszerkesztő mod-ot a quake-be :)

--------------------------------------
Unix isn't dead. It just smells funny.

Kényelmetlen!

en sohasem hasznalom a nyilakat, sokkal kenyelmesebb a hjkl, nem kell a nyilakhoz kapkodni, tavol vannak, kenyelmetlen es idegesito is szamomra
a lenyeg:
inzert modban hasznald ezeket: M-h, M-j, M-k, M-l (M: meta, masneven alt)
ezek kilepnek inzert modbol es egyuttal leptetik is a kurzort a megfelelo iranyba
bar eszrevettem, h gvim-ben alapertelmezetten nincsenek ezek beallitva, ha nem mukodnek, keruljenek ezek a sorok a .gvimrc-dbe:

imap <M-h> <left><esc>
imap <M-l> <right><esc>
imap <M-j> <down><esc>
imap <M-k> <up><esc>

tipp: tokjol lehet hasznalni a zarojelezesnel:
(muveletek ezzel elvalasztva:"_")
i_()_M-h_a_irhatod amit akarsz
persze erre biztos tudnak az ide irogato nagy vi-os veteranok vmi elegansabb megoldast is :)

ja es ne felejtsuk el h van egy nagyon regi es nagyon elterjedt bill. kombinacio, meg windowsban is sok helyen mukodik a beviteli mezokbe, parancssorban meg meg kitudja hol, ez pedig a: "C-h" (ahol C a control) (windowsban parancssorban a C-m is mukodik)
emacs-ben sajnos valamiert vmelyik verzio utan mar nem ez az alapertelmezett, ezert nalam a .emacs file-ba kotelezo ennek az S-kifejezesnek a szereplese: "(define-key global-map "\C-h" 'backward-delete-char)"

szoval a C-h termeszetesen vi-ban is mukodik es nagyon kenyelmes dolog inzert modban

Én erre egy imap-ot csinálnék, hogy a bal-zárójel gomb nyomására írjon egyúttal egy jobb-zárójelet is, majd a kurzort kettővel ugrassza vissza.
Egy kicsit bonyolultabbat csináltam: kapcsos zárójelre új sort kezd, a következőbe (identálva) a zárójel párját írja, a kurzort a két zárójel közé helyezi :)
imap { {<Esc>o}<Esc>ko

http://hup.hu/node/97489#comment-1194544

--------------------------------------
Unix isn't dead. It just smells funny.

Ismétlés a tudás jóédesannya :)

most neztem meg csak meg az emacs viper modjat, a fenti hozzaszolasban szereplo keybinding az egyik legalapvetobb, nelkule elegge nyug lnenne a hasznalat. (lehet h meg a vi-t sem hasznalnam nelkule)
szoval megcsinaltam gyorsan emacs-re. (viper-re)
ez keruljon a ".emacs"-be:

(with-eval-after-load
  'viper
  (define-key viper-insert-global-user-map "\M-h" '(lambda nil (interactive) (backward-char) (viper-change-state-to-vi)))
  (define-key viper-insert-global-user-map "\M-j" '(lambda nil (interactive) (next-line)     (viper-change-state-to-vi)))
  (define-key viper-insert-global-user-map "\M-k" '(lambda nil (interactive) (previous-line) (viper-change-state-to-vi)))
  (define-key viper-insert-global-user-map "\M-l" '(lambda nil (interactive) (forward-char)  (viper-change-state-to-vi))))

regebbi emacs eseten:

(eval-after-load
  'viper
  '(progn
     (define-key viper-insert-global-user-map "\M-h" '(lambda nil (interactive) (backward-char) (viper-change-state-to-vi)))
     (define-key viper-insert-global-user-map "\M-j" '(lambda nil (interactive) (next-line)     (viper-change-state-to-vi)))
     (define-key viper-insert-global-user-map "\M-k" '(lambda nil (interactive) (previous-line) (viper-change-state-to-vi)))
     (define-key viper-insert-global-user-map "\M-l" '(lambda nil (interactive) (forward-char)  (viper-change-state-to-vi)))))

enjoy

===
a világ legjobb editorja a vi es az emacs. ezen belül a vi a legkényelmesebb, az emacs pedig a leghatékonyabb. ezen kívül az emacs a legkényelmesebb es a vi a leghatékonyabb (csak saját tapasztalat)

Emacs-ben igazából az M-f,b,n,p és s/S, ctrl-l és társaikat használják a navigációra, nem a "nyilakat".

Kovezwzetek meg, de en amig emacsoztam, mindig a nyilakat hasznaltam, es amiota Vimezek, azota a nyilakat hasznalom...
--
Blog | @hron84
Üzemeltető macik

Hát... vi alatt annyira kézre áll a jklé, hogy azért talán járhat a kövezés... :D

en nyilakat hasznalok
irtatok itt hogy messze vannak, de mivel en csak notebooko(ka)t hasznalok, a sajat billentyuzetukkel, igy nem sok a kulonbseg :)
-
Slackware current / OSX Snow Leopard

time machine

:earlier 2m <- back by 2 minutes

:later 30s <-forward 30 seconds

:undo 5 <- go back 5 changes

:undolist <- show entire undo/redo list

És a jövőbe nem lehet menni? :)

parancssorbol:

vim -p <filelista>

a parameterkent megadott file-okat mind kulon TABon nyitja meg
-
Slackware current / OSX Snow Leopard

Itt is megemlítem (remélem még nem volt) hogy a VIM-ről írt könyvem letölthető a MEK-ből (ingyen) e link alól:

http://mek.oszk.hu/09600/09648/

Remélem hasznára válik mindenkinek!
-------------
Használj GoboLinuxot: http://mek.oszk.hu/05800/05895/
Könyvem a VIM-ről: http://mek.oszk.hu/09600/09648/#
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó

Hasznos egy ilyen szöveg, azonban fontos a tartalom minősége is (korábbi javaslataim), leginkább a magyarított kifejezések:

pattern helyett minta
inzert helyett beszúró vagy insert (eredeti angol!)
buffer helyett puffer

stilisztikailag:
konvertál helyet alakít jobb lenne

egyéb:

^[[6~ helyett inkább <F6>

Működik a <PgUp>, stb. is

Hát legalábbis a "puffer" szón én is gondolkoztam már írás közben is mert én azt szoktam meg, de MINDENÜTT buffert láttam a legkülönbözőbb (amúgy magyar nyelvű) szakszövegekben, így végül jobb meggyőződésem ellenére alkalmazkodtam hozzá. Bár nem szívesen.

Mindenesetre ez a leírás már így marad, mert fel van töltve a MEK-be, s ha megváltoztatnám, azzal plusz munkát adnék a MEK-könyvtárosoknak, holott nem szívesen terhelném le őket, mert van azoknak egyéb dolguk is.
-------------
Használj GoboLinuxot: http://mek.oszk.hu/05800/05895/
Könyvem a VIM-ről: http://mek.oszk.hu/09600/09648/#
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó

http://wiki.hup.hu/index.php/Buffer_overflow avagy puffer túlcsordulás, ahogy a szöveg írja

A másikat értem, csak nem értem meg, mert a könyvtár azokért van, akik letöltik a dokumentumokat, nem pedig a könyvtárosokért.

"mert van azoknak egyéb dolguk is."
Nem, nincs, ezért fizetik öket.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

Amúgyis a verziózás egy hasznos funkció. Nekik is csak használ, ha bevezetik.

--------------------------------------
Unix isn't dead. It just smells funny.

feliratkozas

~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~
Zenwalk - Full featured GNU Linux Operating System

en ebbol tanultam mikor eldontottem hogy marpedig vimet fogok hasznalni :)

Mi indított erre a végzetes elhatározásra?
Én akkor kezdtem el vele foglalkozni miután, OpenRTS routert kezdtem hasznánli - megrázó élmény volt, pedig én az ms "gyémánt" elrendezésén nevelkedtem.

* Én egy indián vagyok. Minden indián hazudik.

oszinten szolva mar fogalmam sincs...
gondolom olvastam rola, hogy milyen hatekony, jofajta, ugyhogy nekialltam
nem is bantam meg :)

:mksession! filename

Save your sessions in vim to resume later

Creates a full snapshot of your current vim session, including tabs, open buffers, cursor positions, everything. Can be resumed with vim -S . Useful for those times when you HAVE to close vim, but you don't want to lose all your hard-opened buffers and windows. The ! will cause vim to overwrite the file if it already exists. It is not necessary, but useful if you frequently save to the same file (like session.vim or something).

-----------------
inside vim try:
:help 42

Nem alapparancs, hanem egy plugin, de nagyon hasznos lehet olyanoknak, akik valamilyen SQL-lel dolgoznak és az SQL-lekérdezéseik dinamikusak, és hát, hébe-hóba (hóba? ilyen melegben???) becsúszik némi kis hiba, és sokszor a kész SQL-lekérdezést csak jobb nézegetni, hol romlott el a dinamikus generálás. Ja, és de jó lenne, ha az SQL színezve lenne (oké, ft=sql oszt' kalap), meg nem egy sorban, hanem szépen tördelve, beljebb húzva, ahol kell. Nos, ez lenne az SQLUtilities SQLUFormatter parancsa...

Ilyet a ctags-szel is lehet.

legalabb olvasd el a linkelt cikket...
ott is irjak, hogy igen, a ctags is tud ilyet, es azt is leirjak, miben jobb ez a megoldas :P

Rég elolvastam.
De akkor világosíts fel, hogy miben jobb?
A sebességet nem tudom ellenőrizni, de ha csak abban jobb, hogy kiírja, hogy egy f betűt vagy bármit odabiggyeszt a listába illetve a függvények paraméterezését is kiírja, az mind lehetséges ctags esetén is. Vagy valami elkerülte a figyelmemet?

"Sokkal gyorsabb, szebb, jobb és ha már egyszer a FreeBSD a jövőben clang-gal jön
alapból, akkor miért ne használnánki ezt a lehetőséget?!"

tessek

de amugy nem ertem a problemadat... senki nem mondta hogy mostantol kotelezo ezt hasznalni, nyugodtan hasznalhatod a ctags-et
vagy az faj neked, hogy masok hallanak arrol, hogy van a ctags-nek alternativaja? :S

Mindenki azt használ, amit akar. Azért írtam oda a ctags-et, hogy valaki a cikk elolvasása után nehogy azt higgye, hogy a ctags milyen gáz és a clang milyen jó (tudod, téves információk).
A kép alapján úgy értelmeztem, hogy a szerző azért gondolja a clang-ot jobbnak, mert tudja azt, hogy kiegészítéskor odaírja, hogy a találat függvény, változó, típus, stb. illetve függvény esetén a paraméterezést. Erre írtam azt, hogy ilyet a ctags is tud. Pontosabb információ ilyen ügyben nincs a linkelt oldalon.
Az lehet, hogy gyorsabb, azt nem tudom (a ctags se lassú, legalábbis az a pár tizedmásodperc nem kritikus).
Ezért kérdeztem tőled, hogy miben jobb (olyan funkció, amit a ctags nem tud, vagy kevesebb bug, vagy mi), de erre nem írtál semmit, csak idézted a honlapon, hogy "jobb".
Szóval akkor: miben jobb? Tényleg kíváncsi vagyok rá, mert ha olyan valamiben jobb, ami nekem is hasznos lehet, kipróbálom. Az, hogy a freebsd-ben mi a default (jövőben?), nekem lényegtelen :)

Szerzo en voltam, es a baj a ctags-szel, hogy ott elore le kell generalnod az index fileokat, miket a vim hasznal, mig clang-gal dinamikusan az include-ok fuggvenyeben tudsz kodot kiegesziteni.

Egy FreeBSD forras ctags-el csak az index olyan 1.5GB, ami azert nem kellemes, clang eseteben meg egy include es dinamikusan megkapom es nem zabal le 1.5GB disc space-t plusz a vim-nem nem kell azt memoriaba berantani. Es ez az igazi elonye.
___
info

Na, ez már korrekt válasz :) Köszönöm.

(igazán beleírhattad volna a blogba, mert szerintem pont ez lenne a lényeg)

+

:se path=include,src
A find parancs keresi a fájlokat a path-ban megadott könyvtárakban, majd megnyitja szerkesztésre. A Tab-os kiegészítés (természetesen) működik.
Pl. a
:find main.c
az src könyvtárban levő main.c-t nyitja meg, a
:find main.h
pedig az include-ban levő main.h-t.

sub

http://vim-adventures.com/

:)

===
a világ legjobb editorja a vi es az emacs. ezen belül a vi a legkényelmesebb, az emacs pedig a leghatékonyabb. ezen kívül az emacs a legkényelmesebb es a vi a leghatékonyabb (csak saját tapasztalat)

sub

sub

Ezt még nem láttam itt, van pár okos dolog, amit innen vettem át: http://stackoverflow.com/questions/164847/what-is-in-your-vimrc/171558

Pár apróság, főleg keybinding:

" show trailing whitespaces, except EOL
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
""" Key mappings...
" vim tab helper
nmap <S-F6> :tabprevious<CR>
imap <S-F6> <Esc>:tabprevious<CR>a
nmap <S-F7> :tabnext<CR>
imap <S-F7> <Esc>:tabnext<CR>a
nmap <S-F5> :tabnew<CR>
imap <S-F5> <Esc>:tabnew<CR>
nmap <S-F8> :tabclose<CR>
imap <S-F8> <Esc>:tabclose<CR>
" identation helper
nmap <C-j> <<
nmap <C-k> >>
vmap <C-j> <gv
vmap <C-k> >gv
" save
nnoremap <F2> :write<CR>
inoremap <F2> <Esc>:write<CR>a
nmap <F6> :set invpaste<CR>
imap <F6> <C-O><F6>
set pastetoggle=<F6>
" confirm quit
nnoremap <F10> :confirm quit<CR>
inoremap <F10> <Esc>:confirm quit<CR>
" toggle ling numbering
nnoremap <F12> :set invnumber<CR>
inoremap <F12> <Esc>:set invnumber<CR>a
" c&p between windows
vmap <silent> ,y y:new<CR>:call setline(1,getregtype())<CR>o<Esc>P:wq! ~/.vim/reg.txt<CR>
nmap <silent> ,y :new<CR>:call setline(1,getregtype())<CR>o<Esc>P:wq! ~/.vim/reg.txt<CR>
map <silent> ,p :sview ~/.vim/reg.txt<CR>"zdddG:q!<CR>:call setreg('"', @", @z)<CR>p
map <silent> ,P :sview ~/.vim/reg.txt<CR>"zdddG:q!<CR>:call setreg('"', @", @z)<CR>P

json formázás:

:%!python -m json.tool

Egy html tag kijelölése benne állva, parancs módban:
vat

A matchit pluginnal meg egyszerubb, raalsz a tag elejere, Shift+V, %. Akar tobb soron at is.
--
Blog | @hron84
Üzemeltető macik

Ezzel az a gond, hogy ha a html tag < karakteren allsz, akkor csak magara a zaro > karakterre fog ugrani. A t text object celszerubb.

(BTW. a visual mode az antipattern amugyis... ;-) )

A matchit plugin ennel okosabb.

Miert antipattern a visual mode? Hogy masolsz ertelmesen vimbol, ha nem visual modban?
--
Blog | @hron84
Üzemeltető macik

Lehet más verzióm van matchitből (Ubuntu 15.04 default), de nálam így viselkedik. Most kipróbáltam még egyszer.

> Hogy masolsz ertelmesen vimbol, ha nem visual modban?
Normal módban :-)

Mire vagy kíváncsi pontosan? Soron belül általában text objectet. HTML/C-szerű nyelvek esetén is (taget/blokkot).

Ha több sort akarok akkor relativenumber segít benne, kurzor plusz öt sor: y5j. Ne feledd, a vim nem a mellébeszélésről szól (Kezdjünk egy kijelölést, menjünk le 5 sorral, majd fejezzük be a kijelölést, jó, nagyonügyeees, és akkor most másoljunk...). Nem.

Ha több képernyőn keresztülcsúszik, akkor segíthet a visual mode (persze biztos lesz aki esküszik arra, hogy kopizzunk kurzortól KERESETTSZO végéig y/KERESETTSZO\zs, vagy mondjuk két bekezdést y2ap. A hardcore-abbak odatesznek egy markot a kezdőponthoz, lemennek két képernyőnyit, majd commandline-ból yankelnek: mm:'m,.y, de persze ezek mÁr csak mentális maszturbációk.

A lényeg, hogy Visual mode nem is nagyon volt régen (a vi-ben nincs is visual mode, a vim visual módján a normál módot értjük, csakhogy megkavarjalak), szóval mindent meg lehet csinálni anélkül is, és az esetek egy részében valószínűleg gyorsabban. (Bírom amikor emberek html-ben jelölgetnek ki egérkével egy kibaszott "+yit helyett...)

Oke, mondd el nekem, hogyan jelolsz ki blokkijelolessel ugy, hogy nem hasznalsz visual mode-t? Mert en eleg sokszor hasznalok ilyesmit.

Amugy meg tudom, hogy a vimben ezt ezerfele modon meg lehet oldani, de nekem pont ez tunik szellemi maszturbacionak. Ha veletlen elszamolom a sort, nem oda sikerul a mark, barmi, beszoptam, de a visual mode-dal eleg nagy biztonsaggal jelolok ki olyan szoveget is, ami wall of text, hovatovabb egy soros, ketszazmegabyte-s szovegfajlbol is ki tudok vele jelolni, ahol szokoz nelkuli random szovegek vannak (volt mar ilyen feladatom is).

Elhiszem, hogy ezt regen is megoldottak valahogy, de most itt van egy kenyelmes es egyszeru megoldas arra, hogy ezeket a feladatokat sokkal hatekonyabban (nem gyorsabban, hatekonyabban) megoldjam, es nem fogok csak azert lemondani rola, mert ez most eppen nem divat. Majd a divat egy ido utan utoler engem (legyen az az irany elore vagy visszafele)... :-)

Ez a "nem is nagyon volt regen" -> antipattern hozzarendeles ez mindig fel tudja bokni az agyam egyebkent. Annak idejen szamitogep se volt, szoval az, hogy interneten egy forumon beszelgetunk, az is antipattern, megbeszelhetnenk ezt f2f is egy sor mellett, csak nehanyszaz kilometer, ha az ember jol kilep...
--
Blog | @hron84
Üzemeltető macik

Értelmezd amit írtam légyszíves a fröcsögés helyett.

Nem azért antipattern, mert régen nem volt. Hanem azért, mert a visual módot az esetek 95%-ban azért használják a noobok, mert nem ismerik a textobjektumokat, a relatív ugrásokat, stb.

Ezért jobb, ha arra szoktatja magát az egyszeri vimmer, hogy amíg tud, ne visual módot használjon. Ha pedig mégis mindenáron kijelölget (amivel akár mittomén intellij-ben is bohóckodhatna), akkor nyugodtan mondhatjuk, hogy antipattern, hiszen van legalább x módszer arra, amit meg akar valósítani.

A noobok szerintem inkább azért használják a visual mode-ot, mert biztonságot ad a visual feedback, hogy jól gondolta, hogy a másolást/törlést/akármit azon a szövegen fogja elvégezni, amire gondolt. Egyébként lehet használni a text objektumokat és a relatív ugrásokat is visual mode-ban is.

Van legalabb x modszer barmire a vim-ben, megse szamit antipatternnek, ha en a x[2] -es megoldast hasznalom, es nem az x[1]-et, ami az elfogadott/divatos/barmi. Csak azert antipatternnek hivni a visual mode-t, mert tavolrol es bal szemmel hasonlit a grafikus szerkesztokben hasznalatos kijeloleshez (egyebkent baromira nem ugyanaz a ketto), hat enyhen szolva is sznobsag.
--
Blog | @hron84
Üzemeltető macik

Te jó ég. Hihetetlen hogy még mindig nem érted.

A visual hasznos esetei:
- block mode change / delete
- előadás vagy oktatás közben kijelölöm a tárgyalt részt
- az elején említett "vat" pont azért jó, mert nem kell szemmel ki-parse-olni a html kódot, ha esetleg elcsúsztam valami div-vel