Когато редактирам файлове през ssh, предпочитам да използвам VIM пред редактори като nano. Въпреки че със сигурност е по-лесно да намерите бутона за запазване в nano, повечето други действия в nano са просто тромави. И въпреки че никога не съм разбирал наистина манията по навигацията в началния ред, тъй като мозъкът ми обикновено е ограничаващият фактор, а не колко бързо мога да пиша или навигирам през редактор, предпочитам как VIM просто върши работата.

Едно нещо, от което бих се възползвал, когато се науча да използвам този редактор, е просто измамнически лист с най-често срещаните действия, които бихте искали да правите в редактор като VIM. Така че направих един.

Разбиране на VIM

Когато отваряте файл с VIM, стартирате в нещо като команден режим. Можете да навигирате във файла, но не можете да редактирате. За да влезете в режим на редактиране, натиснете i или Insert. Ако натиснете вмъкване повече от веднъж, превключвате между режим на вмъкване (добавяне на текст под курсора) и режим на замяна (замяна на текст под курсора). За да се върнете в команден режим, натиснете Esc.

Ако сте блокирани, обикновено можете да се измъкнете от това, което току-що сте направили, като намачкате Esc и понякога напишете :q Enter. Когато се върнете в команден режим и вече няма странен подкана в долната част, можете да се върнете в режим на редактиране чрез i или Insert.

Когато сте в команден режим, натискането на клавиши като :, / и ? ще премести курсора надолу. Това са началото на командите. Ако не искате да изпълните команда, просто разбийте Esc, за да се върнете към това, което правехте.

Пищов

Всички тези команди се изпълняват в команден режим (вижте по-горе). Създайте си навик да натискате Esc, преди да направите някое от тези.

Критични команди

  • Esc Esc Esc: Върнете се в команден режим
  • i или Insert: Влезте в режим на редактиране
  • :w Enter: Запазете текущия файл
  • :w new_file_name.ext Enter: Запазване в (нов) файл new_file_name.ext
  • :q Enter: Излезте от VIM
  • :q! Enter: Принудително излизане от VIM (отхвърляне на промените)
  • :wq Enter: Запазете промените и излезте от VIM

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

Изрязване / Копиране / Поставяне

VIM има свой собствен „клипборд“. Ако поставите нещо, което не е копирано чрез една от командите на VIM, просто влезте в режим на вмъкване и (ако използвате ssh например) натиснете десния бутон на мишката, за да поставите собствения си клипборд.

  • Insert Right mouse button: Поставяне от собствен клипборд (в ssh)
  • y y: Копиране на текущия ред
  • d d: Изтриване на текущия ред (работи като действието за изрязване, тъй като можете да поставите този ред другаде)
  • p: Поставете това, което сте копирали или изрязали
  • v: Влезте във визуален режим. Във визуален режим избирате текст между знака, където сте въвели визуален режим, и мястото, където курсорът ви е сега. Ако натиснете y копирате цялата тази област и ако натиснете d изтривате/изрязвате цялата тази област. За да излезете, без да правите нищо, използвайте Esc.

Когато се комбинират, можете да направите много неща. Например

  • y y p: Дублира текущия ред, като копира текущия ред и го поставя веднага
  • d d p: Преместете текущия ред под следващия ред
  • v, малко навигация, d за изрязване на секция, след това навигиране до новата позиция и p за поставяне обратно на тази позиция.

Назад-напред

  • u: Отмяна на последното действие (и можете да продължите да го натискате, за да отмените още)
  • ctrl + r: Повторете каквото сте направили, просто отменете

Навигация

Във VIM можете да търсите от началото на файла до края на файла с / и от края на файла до началото на файла с ?. Това засяга само реда на резултатите от търсенето, които получавате.

  • / your search term enter: Намира първото срещане на your search term във файла
  • ? your search term enter: Намира последното срещане на your search term във файла
  • n: При търсене намира следващия резултат. За / това е по-късно във файла, докато за ? това е по-рано във файла. Ако не могат да бъдат намерени повече резултати, ще се върне към първия резултат.
  • shift + n: При търсене отива към предишния резултат.
  • : some line number enter: Отива до посочения номер на ред. (напр. :18 отива на ред 18)