Основни команди на Vim, които да ви помогнат да стартирате

Запознайте се с Майки:

Когато за последен път видяхме Майки, той беше просто амбициозен бизнесмен, който използваше програмиране, за да му помогне да следи ежедневните цифри на продажбите на неговия щанд за лимонада. Можете да прочетете повече за миналите приключения на Майки тук.

Оказва се, че Майки толкова много хареса първия си проект, че сега използва цялото си свободно време, за да напише кода, който управлява почти всяка задача на неговия бизнес. Днес в училище Майки чу готини ученици от 7 клас да говорят за нещо, наречено Vim, но той не знае нищо за това. Майки отива в Google и се опитва да намери още информация.

Какво е Vim?

Майки е изненадан от това, което открива. Оказва се, че Vim в по-голямата си част не е нищо повече от текстов редактор, макар и изключително мощен. За съжаление за Майки, използването на Vim идва с малко обучение, но Майки намери някои основни команди в Google, които иска да опита. Нека кодираме заедно с Майки и да видим какво представлява този Vim.

Влизане във Vim

Влизането във Vim е доста лесно. Просто навигирайте до директория през вашия терминал и въведете vim insert_file_name_here в командния ред. Това ще отвори вашия файл във Vim.

Режим на вмъкване/команда

Vim е в команден режим, когато се отвори. Намирането в команден режим ще ви позволи да навигирате и редактирате текста си с команди на Vim. Той не винаги действа по начина, по който бихте очаквали, ако приемем, че се опитвате да го използвате като стандартен текстов редактор. Има няколко точки в тази публикация, където ще има текст, който да копирате/поставите във вашия файл. Докато отивате да поставите вашия копиран текст, не забравяйте да влезете в режим на вмъкване, като щракнете върху клавиша i. Нека insert малко текст в нашия файл:

Three words.
Two WORDs…!

Можете да копирате и поставяте както обикновено, когато сте в режим на вмъкване. За да влезете обратно в команден режим, просто натиснете клавиша esc.

Команди h/j/k/l

Vim не реагира на мишката по начина, по който сме свикнали, вътре или извън командния режим. В резултат на това навигацията обикновено се извършва чрез клавиатурата. Въпреки че Vim ще реагира на стрелките за посока на клавиатурата, най-добрата практика е да свикнете с командите h/j/k/l:

h — moves the cursor one space left
j — moves the cursor one space down
k — moves the cursor one space up
l — moves the cursor one space right

Опитайте да използвате някоя от командите h/j/k/l във файла, който разглеждате в момента. Възможността за преместване на курсора е добро начало, но преместването интервал по интервал не е много ефективно. Нека да разгледаме няколко начина за преместване на курсора на повече от едно място наведнъж

„ДУМА“ срещу „дума“

Преди да продължите напред, важно е да отбележите, че няколко от следните команди са предназначени за навигация между „думи“ и „ДУМИ“. Отделете малко време с Майки, за да опитате да различите разликата между думите и ДУМИТЕ, както е определено от VIM Adventures:

  • Думата се състои от поредица от букви, цифри и долна черта или поредица от други непразни знаци, разделени с бяло пространство (интервали, табулатори, EOL). Празният ред също се счита за дума.

Three words.

  • ДУМАТА се състои от поредица от непразни знаци, разделени с бяло пространство (интервали, табулатори, EOL). Празен ред също се счита за ДУМА

Two WORDS…!

‘w’ vs ‘W’

Командите w и W ще се движат съответно над думи и ДУМИ.

Командата w ще премести курсора напред до началото на следващата дума. Нека да разгледаме нашия пример за дума от по-рано:

- three w commands will navigate over each of the words below
Three words.

Сега нека да разгледаме нашия пример с WORD от по-рано:

- two W commands will navigate over each of the WORDs below
Two WORDs…!

Тествайте новите w/w команди с Майки.

‘e’ vs ‘E’

Командите e и E работят по начин, подобен на този на w/W, с изключение на това, че e/E ще отведе курсора напред до края на следващата дума, а не до началото. Майки добавя следното към своя текстов файл, за да изпробва командите e/E. Нека го направим с него:

sugar-free gum

‘b’ vs ‘B’

Помните ли как w/W командите ще ви отведат до началото на следващата дума/ДУМА? Командите b/B ще ви отведат до началото на предишната дума/ДУМА. Майки ще добави този следващ пример към своя текстов файл и ще опита да използва всяка от командите w/W, e/E и b/B. Ще го направиш ли с него?

Tuesday’s doctor appt.

‘0’ vs ‘$’

Прескачането от дума на дума определено ще бъде полезно, но какво ще стане, ако искаме да преместим курсора от началото на ред до края на ред? Като алтернатива, какво ще стане, ако искаме да се върнем в началото на реда, докато курсорът ни е в края на реда? Прескачането дума по дума може да отнеме няколко натискания на клавиши. За щастие имаме командите с число 0 и $. Направете като Майки и копирайте/поставете следното във вашия текстов файл, след което опитайте да навигирате във файла, като използвате командите 0/$ заедно с някоя от предишните команди:

Fourscore and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.

‘x’ vs ‘X’

Командата x ни позволява да изтрием интервала след позицията на курсора. Командата X изтрива интервала пред позицията на курсора. Майки отива да копира следното в своя текстов файл, за да експериментира с командите x/X. Това, което ще се случи след това, ще ви шокира...

You’ll never get away with this!!!

‘dd’

По начина, по който навигирането дума по дума може да отнеме доста усилия, същото може да се каже и за командите x/X. Изтриването на един символ определено е нещо, до което искаме да имаме достъп, но командата сама по себе си не е много ефективна при изтриване. Изпълнението на командата dd ни позволява да изтрием цял ред само с 2 натискания на клавиш (първото d извиква командата за изтриване, второто я прилага към текущия ред). Майки копира и поставя следното в своя текстов файл, след което се опитва да експериментира с командата dd (не се притеснявайте, когато текстът ви изчезне. Ние ще се погрижим за това след секунда):

All work and no play makes Jack a dull boy.
All work and no play makes Jack a dull boy.
All work and no play makes Jack a dull boy.
All work and no play makes Jack a dull boy.
All work and no play makes Jack a dull boy.
All work and no play makes Jack a dull boy.
All work and no play makes Jack a dull boy.

Командата "dd" ще изтрие целия ред, независимо от местоположението на курсора.

отмяна/възвръщане

Майки толкова се развълнува, че изтри целия си текст. Не е голяма работа. Нека отменим нашите действия за изтриване на ред. Майки просто въвежда u (докато е в команден режим) за всяко действие, което би искал да отмени. Командата за повторение може да се използва с CTRL + r. Нека отменим промените си, за да можем да си върнем текста.

Свързване на команди на Vim

Майки се чувства доста добре с уменията си на Vim. Той решава да ги покаже на приятеля си Томи, докато играят този следобед, но Томи не е впечатлен. Той казва на Майки, че въпреки че концепцията е готина, нищо от това, което прави, не се оказва по-ефективно от използването на текстов редактор като Atom или Sublime. Майки разбира, че Томи е бил прав и чувства, че цялата му практика с Vim е била напразно. Горкият Майки.

Вече слънцето залязва и Томи трябва да се прибере, но Майки все още мисли за Вим. Майки е почти готов да се откаже от Vim завинаги, когато му хрумва луда идея. Той отваря своя текстов файл с Vim, намира дума във файла си и въвежда тази команда:

2W

Курсорът на Майки сега се придвижва напред до началото на думата 2 ДУМИ напред. Майки изпробва друга команда:

5x

Сега Майки е изтрил 5-те интервала след курсора. Майки опитва нещо лудо сега:

5dw

Сега Майки е изтрил 5-те думи след неговия курсор. Той продължава да се заблуждава и отбелязва някои от методите на Vim, които е свързал заедно:

  • [count], w/W : e/E : b/B : h/j/k/l — изпълнява командата [count] брой пъти
  • d [брой] w/W : e/E : b/B : h/j/k/l — изтрива според командното действие [брой] брой пъти
  • d 0/$- изтрива всичко между курсора и началото/края на ред

Той е сигурен, че има много повече за намиране, но е уверен, че това, което има тук, е достатъчно, за да го накара да направи Vim жизнеспособна опция за редактиране на неговите текстови файлове. Това прави Майки щастлив.

Майки излиза от Vim и е сигурен, знаейки, че в крайна сметка ще научи достатъчно команди, за да използва ефективно Vim. За да излезете от Vim, без да запазвате промени, просто въведете командата за излизане с :q, за да излезете, докато сте в команден режим (може да се наложи да въведете :q!, ако файлът е бил променен след отварянето му). За да запазите промените, въведете командата за запис, преди да излезете, така: :wq.

Очаквайте втора част, където Майки ще приложи редица различни методи, които ще накарат Томи да прецени оценката си за силата на Vim за редактиране на текст. Давай Майки!