vim indent

Fórumok

Tudna nekem valaki segíteni abban, hogy a vim-ben hogyan tudom beállítani azt, hogy pl. egy java fálj szerkesztésekor minden új szintet 3 szóközzel beljebb kezdjen?
Tehát:

if(cond){
   foo();
}

Köszi!

Hozzászólások

Ha jol tudom, akkor vim-ben `set tabstop=3` parancsal be tudod allitani hany szokozt hagyjon, vagy a vimrc-be beleteszed h `tabstop=3`.
Persze ` nelkul.
Ha nem voltam a segitsegedre, bocsi.

set shiftwidth=3
set cindent

És tanuld meg használni parancs módban a << és >> parancsokat, insert módban pedig a CTRL+t, CTRL+d -t. Remélem neked is olyan hasznos lesz, mint nekem :)

Ha meg csinalsz vizualis kijelolest (v, shift-v, ctrl-v) es nyomsz egy = -t, az maga a menyorszag...

vagy ha visszafele akarsz keresni akkor a # a * helyett
a vimdiff is ultrasztar
a bookmarkok is (m1 '1)
a . az is theocracy (megismetli az elozo muveletet)
elvileg q-val lehetne felvenni es visszajatszani de meg sose probaltam

"ctrl+w s" osztott kepernyo stb

javahoz a :TlistToggle-s kiegeszito is hasznos lehet

a q-val felvett makrót a @-al lehet lejátszani, nagyon király. például:

qa$Bialma ^jq

felvesz egy makrót, ami a sor utolsó szava elé beszúrja az alma szót, majd egy sorral lejjebb lép. Ezek után a makrót végrehajtani: @a-val lehet. Többször egymás után, szépen csinálja soronként (ezért kell a j). Szerintem szenzációsan használható.

Igen en is igy vagyok vele... Mostanaban GTK-s progikat irkalok, es eszembejutott hogy milyen jo lenne ha a GTK fugvenyeit is szinezne. Rakerestem hatha ma megoldottak elottem es talaltam egy "plugint" ami egész szépen kiszinezi a gtk fugvenyeket, makrokat, tipusokat, mindent.
(ha valakit erdekel itt megtalalja: http://www.vim.org/scripts/script.php?script_id=1000 )

--
"Az a szóbeszéd járja Amerikában, hogy két intelligens faj létezik a földön: emberek és magyarok." by Isaac Asimov

Ha egy fugvenyben raalsz a nyito kapcsoszarojelre, akkor egy zf% parancssal osszecsukja a fugveny blokkjat. (amugy a zf alkalmas hogy a megadott forraskodreszt osszecsukd zf150G az aktualistol a 150. sorig csukja ossze pl... szerintem rettento hasznos lehet ez is. :) )
`:make` ugye gondolom alap, `:compiler` -vel be tudod allitani a forditot. pl `:compiler perl` utan `:make` szintaktikailag leellenorzi a perl kodot, es enter utan a hibas sorra ugrik.
ha ma a hibaknal tartunk, :copen :cn :cclose hasznosak lehetnek :make utan...
:%s///g -t ma mondtak, kicsit kiegeszitem azt is: a vegere egy c-t irva ra is kerdez hogy csereljen-e, az elejen a %-ot cserelve egy blokkot is meg tudsz adni :10,15s/foo/bar/gc a 10 es 15.sor kozott cserel de ugy hogy elotte ra is kerdez...
sok dolgot szoktam meg hasznalni, de az erdekesebbek kozul most csak ennyi jutott eszembe.

--
"Az a szóbeszéd járja Amerikában, hogy két intelligens faj létezik a földön: emberek és magyarok." by Isaac Asimov

Blokkok osszezarasahoz a blokkban a zc, nyitasahoz zo, minden blokk osszezarasahoz zM, minden blokk kinyitasahoz zR. Hivatalos neve folding, mukodese fugg a foldmethod erteketol (lekerdezni :set foldmethod), valamint ha syntax a method, akkor a syntax filetol is.
:help folding

szerk:
Jaigen, es a copen/stb egyutt mukodik a vimgrep commanddal is.
--
HUP Firefox extension

+1

nalam elmaradhatatlan meg a .vimrc-bol a set hlsearch (ha zavar, :set nohl kikapcsolja), autoindent, ignorecase, smartcase, showfulltag
autocmd FileType c,cpp :set cindent , hogy c/c++ file-ok indentalasa is kenyelmes legyen

parancssorba (: utan) a puffer tartalmanak beillesztese: CTRL-R 0

vi[m]ccesen írt hozzászólást, ez által később a saját profiljában a "követésen" láthatja, hogy anno ebbe a topicba írt valamit [emlékeztető, ha nincs könyvjelző..], mert jó volt a téma számára, de különösebben ehhez hozzáírni nem szeretne, a +1 -el egyetért valaki vele

Még egy hasznos dolog: % - ez a kurzor alatti zárójel (mindenféle) párjára ugrik.

Topicinditasra: set ts=3 sw=3

Mas tippek:

  • Paste mod (konzolra betolaskor irto hasznos):
    
    :set paste " Bekapcs
    :set nopaste " Kikapcs
    
  • Kedvenc statuszsor beallitasom:
    
    let &stl='--<%02n> %1*%t%* %3*%M%*[%(%R%W%Y%),%{&fenc}:%{&ff}] %2*%{mode()}%* %4*%k%* %= 0x%B at %1*%l%*/%L:%c%V --'
    set laststatus=2        " Always a status line
    
  • A smartindent nagyon hasznos cucc, vimrc-ben feltetlen engedelyezni kell, si a roviditese

Amire tippeket varok:

  • Parancs-aliasok bevezetese (ez pl surun hasznalt snippet nalam, sok kiterjesztest rogzitek: autocmd BufNewFile,BufRead)
  • Kulso indent parancs meghivasara mod oly modon, hogy az epp aktiv puffer tartalmat indentalja ujra. Ne csak a GNU indent-et tamogassa a megoldas
  • Kijeloles sorbarendezese

--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

abbrev: ezt iab-kent ismertem, es valami misztikus varazslatnak tartottam, sose astam meg a melyere, de nem ez az, amit keresek.
Hanem, pl. mint bash-ban az alias parancs: alias ls='ls --color=auto -laF'

sort: Ja, hogy azt a kicsi kinai szoveget nem kell ilyenkor kitorolni, ertem mar.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Ha mar vim, es indent:
Arra van lehetoseg, hogy az ilyen behuzasokat ne `\t`-vel, hanem mondjuk szokozzel toltse ki?
--
Bárki aki aritmetikai módszerekkel akar előállítani egy véletlen számot, az a bűn állapotában leledzik.

imap &LT;TAB&GT; &LT;C-N&GT;

set makeprg=javac\ -Xlint:deprecation\ -sourcepath\ $SOURCEPATH\ -d\ $TARGETPATH\ %

abbr forin for(int i=0; i&LT;n; i++)
abbr pln System.out.println( );&LT;ESC&GT;hhhi
abbr mill System.currentTimeMillis();

Megegy par eszembe jutott amit rendszeresen hasznalok (.vimrc-ben vannak):
zarojelkiegeszites:

:inoremap { {<CR>}<ESC>O
:inoremap ( ()<LEFT>`

a kenyelmes embereknek pedig:
:inoremap for for (;;)<CR>{<CR>}<ESC>?(<CR>a

--
"Az a szóbeszéd járja Amerikában, hogy két intelligens faj létezik a földön: emberek és magyarok." by Isaac Asimov

+1

de azért linkelek is egyet:

http://blogs.gnome.org/lharris/2008/07/20/code-completion-with-vim-7/



syntax          on
filetype        on
filetype plugin on
filetype indent on
map < F1 > ^iSigned-off-by: Oliver Pinter <oliver.pntr@gmail.com>< CR >< ESC >^
map! < F1 > Signed-off-by: Oliver Pinter <oliver.pntr@gmail.com><CR>
map < F2 > ^iCC: O P < o.p@wmail.com >< CR >< ESC >^
map! < F2 > CC: O P < o.p@wmail.com>< CR >
map < F3 > ^iAcked-by: Oliver Pinter < o.p@wmail.com >< CR >< ESC >^
map! < F3 > Acked-by: Oliver Pinter < o.p@wmail.com >< CR >
map < F4 > ^iTested-by: O P < o.p@wmail.com >< CR >< ESC >^
map! < F4 > Tested-by: O P < o.p@wmail.com >< CR >
let c_space_errors=1
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/

set tags+=$HOME/.vim/tags/current.ctags
set tags+=$HOME/.vim/tags/c.ctags

inoremap < Nul > < C-x >< C-o >
autocmd FileType python set omnifunc=pythoncomplete#Complete
map < silent >< C-Left > < C-T >
map < silent >< C-Right > < C-] >
map < F12 > :!exctags -f $HOME/.vim/tags/current.ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
function! SuperCleverTab()
        if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$'
            return "\< Tab >"
        else
                if &omnifunc != ''
                        return "\< C-X >\< C-O >"
                elseif &dictionary != ''
                        return "\< C-K >"
                else
                        return "\< C-N >"
                endif
        endif
endfunction

inoremap < Tab > < C-R >=SuperCleverTab()< cr >


___
info

A mapoknal mi haszna, hogy ketszer irsz be mindent?

A completion-nal nincs valami egyszerubb mint 3 ctrl-es kombot vegignyomni? Mondjuk nekem eleg lenne, ha at lehetne mapolni Ctrl-space -ra a 3 kombot.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

> A mapoknal mi haszna, hogy ketszer irsz be mindent?

Ugye arra gondolsz, hogy van map es van map! is? Mert ezek meg original vi ficsorok, es azt jelenti: map - parancsmodu makro, map! - inzertmodu makro. (de szpen hangzik ez magyarul)

>map < F1 > ^iSigned-off-by: Oliver Pinter < CR >< ESC >^
>map! < F1 > Signed-off-by: Oliver Pinter

Ha megnezed, a parancsmodu verzional van egy ^ (ugras sor elso lathato karakterere), egy i (inzert mod be) az elejen, es egy ESC a vegen pluszban a map! -hez kepest.

Speciel jelzem a ^i helyett kulturember I -t ir ;-) ami ugyanaz, csak sporoltunk :-)

Igen, tudom. Mivel nem vagyok vim fan (nekem elég a vi), nem tudom, hogy az imap és a map! között van-e különbség. Ha nincs, akkor kompatibilitási okokból jobb a map!, Bár tény, hogy ha vim-ben azt kell írni, hogy < F1 > - akkor eleve bukott, mert a hivatalos vi-ban a funkcióbillentyűket a #1 formában kell megadni. (De azzal ugyanígy lehet makrózni azokat.)

Mivel nem vagyok vim fan (nekem elég a vi), nem tudom, hogy az imap és a map! között van-e különbség.

A map! command-line modban is mukodik ellentetben imap-el.
Lasd: :h mapmode-ic

Ez szerintem meg elfogadhato kulonbseg, ha nagyon kompatibilis akarsz maradni vi-al. Es igen #1 formaban is mukodik, legalabbis nalam megy.

Hát megnéztem a hivatkozott vim doksit is, és számomra értelmezhetetlen: originál vi-ban a map *csak* Command módban, a map! pedig *csak* Insert módban ment, szóval szerintem nem OK ami ott szerepel, ráadásul ha igaz lenne ami oda van írva, akkor mi a francot csinálna pinyo fenti beállításaival, ahol más a map és a map! *értéke* - de mindegy, ez itt már erősen off-topic szerintem.

snipmate és nerdtree még nagyon hasznos pluginok

"A fejlesztot azert fizetik, hogy oldja meg a problemat. Ez egy kemeny szakma." - Chain-Q

Ha már így előjött ez a vim tippek téma, arra nincs valakinek ötlete, hogy lehetne remapelni a |link|(vimhelp-ben) követését a CTRL-] billentyű kombinációról vmi másra? Magyar billentyűzeten nem igazán lehet leütni, a CTRL + ALTGr + G-t nem eszi meg sajnos:)

ne használj magyar kiosztást... :-)

de most komolyan... ha az ember programot ír, vagy konfigot szerkeszt, minek magyar kiosztás? Csak szívás, hogy a speciális jeleket nehéz előcsalogatni.

Én amerikai kiosztást használok alapból, és ha valamilyen nyelven szöveget kell írnom, akkor kapcsolok az adott kiosztásra.

De vimben nem gyakran írok ékezetes szöveget egyébként se...

En proggolok meg adminkodok is, megis magyar kiosztassal dolgozom, mert ezt szoktam meg. A specko karaktereket nem olyan nehez elerni, ha az ujjadban van mar, ezekkel az idiota angol billkombokkal viszont sokszor nekem is tele a hocipom.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Ezeknek az idióta amerikai billentyűkombinációknak megvan az a pozitív hatásuk, hogy ugyanott találtam a szögletes zárójelet már az ötös msdos-nál is, mint a legújabb bantulinuxon - feltéve, hogy egyik sem valami intelligens magyar billentyűkiosztásra van kárhoztatva kizárólagosan. És jellemzően egyetlen alt-shift nyomás után tudtam programsorokat gépelni amerikában összerakott gépen, németen vagy hollandon is.

Sokszor nem is tudhatja az ember, hogy mennyire tol ki magával, ha nem ismeri, hogy az adott alkalmazás angol billentyűzeten hová is teszi az adott gombot, aztán pedig győzheti az összes programnál átállítani, hogy ott legyenek a gyorsbillentyűk, ahová a készítők gondolták. Én azt hiszem, hogy lényegesen kevesebb munkával jár, és általánosabban használható az angol kiosztás elsajátítása. Minél hosszabb távon (és nagyobb földrajzi területen), annál inkább.

De akkor már ne angolt (GB), hanem amerikait (US)...

szerintem.

Nem sok a különbség, de amikor Angliában dolgoztam, és angol kiosztású laptopot kaptam, feltelepítettem mellé az amerikai kiosztást is, mert az a kevés eltérés pont az ilyen kombinációk esetében zavaró volt.

G

En tudok angol kiosztasrol is dolgozni, nem is errol van szo, csak az ilyen billkombok nem mukodnek semmilyen egyeb kiosztasnal, ami egy icipicit zavaro.

Kulonben en amiota gepet hasznalok, a magyar kiosztaon mindig is ugyanott volt a szogletes zarojel, mint manapsag (AltGr + F vagy G), es ez sosem volt maskeppen.
Viszont jellemzoen en elsosorban nem programsorokat gepelek, hanem foleg rendszer parancsokat, konfig fajlokat meg kulonfele leveleket - ritkabban fordulnak elo specko karakterek, ha megis, azokra a masodik hasznalatnal konnyen ra lehet talalni akarmilyen kiosztason.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

az angolnal is ugyanott van, amiota en gepet hasznalok (P utan)
nem az angol kiosztas az idiota, hanem a kulonfele nemzeti kosztasok, amik a legelmebetegebb billentyukombinaciokat talaltak ki mindenre
azt meg nyilvan nem lehet elvaras, hogy ha valaki egy hotkeyt akar rakni a programjaba, akkor a vilag osszes billentyukiosztasat nezze vegig, hatha pl. a zulu kiosztasban nehez lesz elerni...

Azert a CE kiosztasok nagy reszen ezek a specko karakterek ott vannak a helyukon. KDE csatin most beszeltem spanyol es nemet kiosztasu egyenekkel, es nagyon hasonlo a billzetunk, szoval engedtessek meg a ketkedes joga. Nem kell vegignezni a zulu kiosztast is, ez vilagos, de nem hiszem, hogy olyan megerolteto egy barmilyen CE kiosztast megnezni fur alle felle.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.