blob: be618c66e2759996c89d19932c80fc1b3ed9f1a4 [file] [log] [blame]
# Добродошли у 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. Поставите се на било које слово речи ’Жика’ и откуцајте `ciw<CTRL-r>a<ESC>`{normal}
**ПАМЋЕЊЕ**: *(c)hange [измени] (i)nner [унутрашњу] (w)ord [реч] са <садржајем
(r)егистра> (a)*
5. Поставите се на било које слово речи ’торте’ и откуцајте `ciw<CTRL-r>b<ESC>`{normal}
а) Од сада ће Пера бити задужен за следовања колачића
б) У том смислу, Жика ће самостално одлучивати о судбини торте
НАПОМЕНА: У регистре може и да се брише, нпр. `"sdiw`{normal} ће обрисати
реч под курсором у регистар s.
РЕФЕРЕНЦЕ: [Регистри](registers)
[Именовани регистри](quotea)
[Покрети](text-objects)
[CTRL-R](i_CTRL-R)
# Лекција 2.1.2: РЕГИСТАР ИЗРАЗА
** Умећите резултате израчунавања „у лету” **
1. Померите курсор на линију испод обележену са
2. Поставите се на било коју цифру броја у њој
3. Откуцајте `ciw<CTRL-r>=`{normal}60\*60\*24 `<ЕНТЕР>`{normal}
4. У наредној линији, пређите у режим уметање и додајте данашњи датум
помоћу `<CTRL-r>=`{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<CTRL-r>=`{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. Уметните текст директно из регистра у режиму уметање: `<CTRL-r>a`{normal}
5. Уметните резултате простих аритметичких операција:
`<CTRL-r>=`{normal}60\*60 `<ЕНТЕР>`{normal} у режиму уметања
6. Уметните резултате системских позива:
`<CTRL-r>=`{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
Превео на српски Иван Пешић.