Vim parancsok gyűjteménye

~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ások

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


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

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.

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


: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


: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.

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


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

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

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

Parancs módban:

 :e . 

könyvtárstruktúra megnyitása, tallózásra

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.

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.

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)

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

__ 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"|<line1>,<line2>s#\(.*\)#<li>\1</li>#|<line2>s#$#</ol>#|<line1>s#^#<ol>#|elseif <q-args>=="d"|<line1>,<line2>s#\([^:]*\):\(.*\)#<dt>\1</dt><dd>\2</dd>#|<line2>s#$#</dl>#|<line1>s#^#<dl>#|else|<line1>,<line2>s#\(.*\)#<li>\1</li>#|<line2>s#$#</ul>#|<line1>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


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

" 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

'' - 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

^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...

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 <F5> :set invpaste paste?<Enter>
imap <F5> <C-O><F5>
set pastetoggle=<F5>

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


nmap <TAB> ==
vmap <TAB> =

: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

A

sort

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


foo@bar.com
jingle@bell.com
hibas sor
val@mi.hu
drink@bar.com
ez is egy hibas sor

:sort /^[^@]\+/


hibas sor
ez is egy hibas sor
foo@bar.com
drink@bar.com
jingle@bell.com
val@mi.hu

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.

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

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.

: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

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

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

É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.

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 :)).

.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.

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?

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

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)

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

parancssorbol:

vim -p <filelista>

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

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ó

feliratkozas

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

: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...

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

: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.

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)

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

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<CR>

, 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<C-f><C-f>:'m,.y<CR>

, 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