# Добродошли у VIM приручник # ДРУГО ПОГЛАВЉЕ Ево змајева: ако је ово ваш први додир са програмом vim и намеравали сте да уроните у уводно поглавље, молимо вас да на командној линији Vim едитора откуцате ~~~ cmd :Tutor vim-01-beginner ~~~ или само отворите [прво поглавље](@tutor:vim-01-beginner) приручника на линку. Приближно време потребно за успешан завршетак овог поглавља је између 8 и 10 минута, у зависности од времена потрошеног на експериментисање. # Лекција 2.1.1: ИМЕНОВАНИ РЕГИСТРИ ** Сачувајте истовремено две тргнуте речи, па их налепите ** 1. Померите курсор на линију испод обележену са ✓ 2. Поставите се на било које слово речи ’Пера’ и откуцајте `"ayiw`{normal} **ПАМЋЕЊЕ** *у регистар(”) (а) (y)ank [тргни] (i)nner [унутрашњу] (w)ord [реч]* 3. Поставите се унапред на реч ’колачића’ (`fk`{normal} или `$B`{normal} или `/ко`{normal} `<ЕНТЕР>`{normal}) и откуцајте `"byiw`{normal} 4. Поставите се на било које слово речи ’Жика’ и откуцајте `ciwa`{normal} **ПАМЋЕЊЕ**: *(c)hange [измени] (i)nner [унутрашњу] (w)ord [реч] са <садржајем (r)егистра> (a)* 5. Поставите се на било које слово речи ’торте’ и откуцајте `ciwb`{normal} а) Од сада ће Пера бити задужен за следовања колачића б) У том смислу, Жика ће самостално одлучивати о судбини торте НАПОМЕНА: У регистре може и да се брише, нпр. `"sdiw`{normal} ће обрисати реч под курсором у регистар s. РЕФЕРЕНЦЕ: [Регистри](registers) [Именовани регистри](quotea) [Покрети](text-objects) [CTRL-R](i_CTRL-R) # Лекција 2.1.2: РЕГИСТАР ИЗРАЗА ** Умећите резултате израчунавања „у лету” ** 1. Померите курсор на линију испод обележену са ✗ 2. Поставите се на било коју цифру броја у њој 3. Откуцајте `ciw=`{normal}60\*60\*24 `<ЕНТЕР>`{normal} 4. У наредној линији, пређите у режим уметање и додајте данашњи датум помоћу `=`{normal}`system('date')`{vim} `<ЕНТЕР>`{normal} НАПОМЕНА: Сви позиви оперативном систему зависе од система на којем се извршавају, нпр. на Windows употребите `system('date /t’)`{vim} или `:r!date /t`{vim} Заборавио сам колико секунди има у дану, 84600 је л’ да? Данас је: НАПОМЕНА: исто може да се постигне са `:pu=`{normal}`system('date')`{vim} или, са мање притисака на тастере `:r!date`{vim} РЕФЕРЕНЦА: [Регистар израза](quote=) # Лекција 2.1.3: БРОЈЧАНИ РЕГИСТРИ ** Притискајте `yy`{normal} и `dd`{normal} и уочите ефекат који имају на регистре ** 1. Померите курсор на линију испод обележену са ✓ 2. тргните нулту линију, па затим погледајте садржаје регистара са `:reg`{vim} `<ЕНТЕР>`{normal} 3. обришите линију 0. са `"cdd`{normal}, па затим погледајте садржаје регистара (где очекујете да видите линију 0?) 4. наставите да бришете сваку наредну линију, посматрајући успут регистре `:reg`{vim} НАПОМЕНА: требало би да приметите како се брисања целих линија померају низ листу након додавања нових обрисаних линија 5. Сада (p)aste [налепите] следеће регистре у редоследу: c, 7, 4, 8, 2. тј. са `"7p`{normal} 0. Ово 9. лелујаво 8. тајна 7. је 6. на 5. оси 4. једна 3. ратна 2. порука 1. поштовања НАПОМЕНА: брисања комплетних линија (dd) много дуже остају у бројчаним регистрима у односу на тргања целих линија или брисања која користе мање покрете РЕФЕРЕНЦА: [Бројчани регистри](quote0) # Лекција 2.1.4: ЛЕПОТА МАРКЕРА ** Избегавање аритметике код неискусних програмера ** НАПОМЕНА: уобичајен проблем приликом писања кода је премештање великих делова кода. Следећа техника помаже да се спречи потреба за израчунавањима броја линије који је потребан у операцијама као што су `"a147d`{normal} или `:945,1091d a`{vim} или још горе, првобитном употребом `i=`{normal}1091-945 `<ЕНТЕР>`{normal} 1. Померите курсор на линију испод обележену са ✓ 2. Пређите на прву линију функције и маркирајте је са `ma`{normal} НАПОМЕНА: тачна позиција унутар линије НИЈЕ битна! 3. Померите се на крај линије и онда на крај блока кода са `$%`{normal} 4. Обришите блок у регистар са `"ad'a`{normal} **ПАМЋЕЊЕ**: *у регистар(") (a) постави (d)eletion [брисање] од курсора до ЛИНИЈЕ која садржи маркер(') (a)* 5. Налепите блок између BBB и CCC са `"ap`{normal} НАПОМЕНА: вежбајте више пута ову операцију да би вам постала природна `ma$%"ad'a`{normal} ~~~ cmd AAA function itGotRealBigRealFast() { if ( somethingIsTrue ) { doIt() } // таксономија наше функције се изменила па више нема // азбучног смисла на својој тренутној позицији // замислите стотине линија кода // наивно бисте се померили на почетак и крај и записали или // запамтили оба броја линије } BBB CCC ~~~ НАПОМЕНА: маркери и регистри не деле простор имена, тако да је регистар а потпуно независан од маркера а. Ово није случај са регистрима и макроима. РЕФЕРЕНЦЕ: [Маркери](marks) [Покрети маркера](mark-motions) (разлика између ' и \`) # РЕЗИМЕ лекције 2.1 1. Да сачувате (тргнете, обришете) текст у, и вратите (налепите) из, укупно 26 регистара (a-z) 2. Тргните целу реч са било које позиције унутар речи: `yiw`{normal} 3. Измените целу реч са било које позиције унутар речи: `ciw`{normal} 4. Уметните текст директно из регистра у режиму уметање: `a`{normal} 5. Уметните резултате простих аритметичких операција: `=`{normal}60\*60 `<ЕНТЕР>`{normal} у режиму уметања 6. Уметните резултате системских позива: `=`{normal}`system('ls -1')`{vim} у режиму уметања 7. Погледајте садржај регистара са `:reg`{vim} 8. Научите крајње одредиште брисања комплетних линија: `dd`{normal} у бројчане регистре, тј. опадајући од регистра 1 - 9. Имајте на уму да се брисања целих линија одржавају у регистрима дуже од било које друге операције 9. Научите крајња одредишта свих тргања у бројчане регистре и колико се тамо задржавају 10. Постављајте маркере из командног режима `m[a-zA-Z0-9]`{normal} 11. Премештајте по линијама на маркер са `'`{normal} # ЗАКЉУЧАК Овим се завршава друго поглавље Vim приручника. Још увек се ради на њему. Ово поглавље је написао Пол Д. Паркер. Изменио за vim-tutor-режим Restorer Превео на српски Иван Пешић.