Направо към съдържанието

Vim

от Уикипедия, свободната енциклопедия
Снимка на екран на софтуера

Vim (произнасяно „Вим“) е един от най-мощните и стари текстови редактори, достъпен безплатно за почти всяка операционна система (включително и Windows). Vim произлиза от текстовия редактор vi, които излиза през 1978 с Втората Дистрибуция на Бъркли (2BSD). VIM е включен във всяка дистрибуция на Linux и е често единственият мощен текстов редактор, който е достъпен при липса на Графичен Интерфейс (ГИ). Логиката на програмата е по-различна от логиката на модерните текстови редактори и следва повече логиката на Linux bash. Vim поддържа редактиране от дясно наляво (например за арабски, фарси, иврит), и многобайтови знаци за Уникод и езици, чиито букви изискват повече от един байт компютърна памет, каквито са китайски, японски, корейски и др. Vim има команди, които дописват това, което пишете – команди, имена на файлове или думи. Vim автоматично разпознава типа на файла (DOS, Mac, Unix) и позволява промяната му.

Vim е част от всяка една модерна Unix, Linux и BSD дистрибуция. За Уиндоус програмата може да бъде изтеглена безплатно.[1]

Свойства на текстовия редактор

[редактиране | редактиране на кода]

Свойствата на програмата са представени с конкретни примери – за владеещите английски език най-лесният начин за запознаване е изпълнението на командата vimtutor, за хората с по слаби умения четенето на този документ и едновременно експериментиране с отворена програма и готов непотребен текстов файл е препоръчително.

Програмата разполага с различни режими – т.е. програмата реагира на написаното на клавиатурата според режима, в който се намира. За начинаещи най-трудният момент е осъзнаването на този факт, както и свикването към преминаването в различни режими.

В този режим (Normal mode) бива стартиран текстовият редактор. В този режим се осъществява навигацията с клавишите j, k, l и h. Освен това натискането на следните клавиши предизвиква:

x  – изтриване на знак след курсора
X  – изтриване на знак от ляво на курсора
dd – изтриване на целия ред на курсора
dl – изтриване на знака под курсора
p  – залепване на текста отбелязан по-рано във визуален режим (вж. визуален режим по-долу)

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

Режим на въвеждане

[редактиране | редактиране на кода]

В този режим (Insert mode) написаният текст на клавиатурата бива вписван и в текстовия файл. Активира се след натискането на клавиша i. Излиза се след натискането на Esc клавиша. Съществуват и други клавишни комбинации за преминаване от нормален (команден режим) в режим на въвеждане – например A преминава в режим на въвеждане, като едновременно премества курсора в края на текущия ред.

Този режим (Visual mode) е нужен, тъй като конзолата няма същата възможност за представяне на отбелязан текст както графичния интерфейс. Употребата на този режим е равносилна на натискането на Shift клавиша и отбелязването на текста със стрелките при ГИ (Графичен интерфейс).

В този режим може да се избира (маркира текст) от текущата позиция след преминаването в режима (чрез натискане на клавиша v) до излизането от режима (натискане на клавиша y, което е командата за копиране, или Esc за преминаване в нормално състояние). Т.е. натискане на v някъде във файла, придвижване с j надолу, натискане на y за копиране на отбелязания текст.

Клавишни комбинации

[редактиране | редактиране на кода]

Клавишните комбинации представени тук са различни за малки и Главни БУКВИ -- т.е. клавишната комбинация Ctrl + G означава едновременно натискане на Контрол клавиша, Шифт клавиша и g, което е различно от Ctrl + g – натискане само на контрол и g клавишите

Esc --- преминаване в Нормален режим
:help --- показване на вградената помощ
help HelpForItem --- показване на помощ съдържаща низа HelpForItem
help .*open\&.*window --- показване на всички редове съдържащи регулярния израз .*open\&.*window т.е. всички редове сърържащи информация за отваряне на прозорци (и двата низа open и window)
:cnext --- скача на следващото попадение на израза от предишната команда
  • :q! Излиза от VIM без да запазва промените в текущия файл
  • :wq Излиза от VIM и запазва промените в текущия файл
  • :wq copy_of_current_file запазва копие от текущия файл с ново име copy_of_current_file
  • vim file_name отваря файла с име file_name, ако този файл не съществува създава нов с това име
  • :split file_name отваря нов файл в същия прозорец
  • vim -o file_name1 file_name2 отваря file_name1 file_name2 едновременно
  • vim *.txt отваря всички текстови файлове в текущата директория
  • vim * отваря всички файлове рекурсивно в текущата директория
  • gf отворя файла, на чиито файлов път се намира Курсора
  • :bn отваря следващия файлов буфер
  • :cnext отваря следващия файлов буфер
  • :bp отваря предишния файлов буфер
  • :ls представя текущите отворени файлови буфери
  • :bn 3 отваря файлов буфер номериран с 3 от предишната команда

Преминаване в различните състояния

[редактиране | редактиране на кода]
  • Esc преминаване в Нормален режим
  • i от Нормален режим преминава в Режим на въвеждане като текста бива въведен при писане ПРЕДИ курсора
  • a от Нормален режим преминава в Режим на въвеждане като текста бива въведен при писане СЛЕД курсора
  • A от Нормален режим преминава в Режим на въвеждане като текста бива въведен при писане в края на текущия ред на курсора
  • O от Нормален режим отваряне на файла в Режим на въвеждане и добавяне на един ред преди текущия ред
  • o от Нормален режим отваряне на файла в Режим на въвеждане и добавяне на един ред след текущия ред

Придвижване в текста

[редактиране | редактиране на кода]

Всички тези команди работят в Нормален режим – т.е. натисни първо Esc за преминаване в Нормален режим

j  --- надолу
k  ---  нагоре
h  ---  надясно
l  ---  наляво

Освен тях класическите:
Home  ---  скок в началото на реда
End  ---  скок в края на реда
Ctrl + Home  ---  скок в началото на файла
Ctrl + End  ---  скок в края на файла
със стрелките наляво надясно нагоре и надолу
Ctrl + лява стрелка  --- скок с една дума наляво
Ctrl + дясна стрелка  --- скок с една дума надясно
Ctrl + G --- показване на текущия файл и ред на който се намира курсора
495G --- прескачане до 495 ред на файла
Ctrl + O --- прескачане до предишната позиция където беше курсора
Ctrl + I --- прескачане до предишната позиция където беше курсора до позицията на първото прескачане
e – прескачане в началото на думите по протежение на реда, равносилно на Ctrl + лява стрелка в ГИ

Натисни Esc за преминаване в Нормален режим.

  • dd изтриване на текущия ред
  • dw изтриване на текущата дума (надясно от курсора)
  • dl изтриване на знака намиращ се под курсора
  • v еминаване във визуално състояние, j за отбелязване на реда, до който текстът трябва да се бъде изтрит, d за изтриване на отбелязания текст и излизане от визуалното състояние.
  • Esc,v Премини във визуален режим
  • j,k,l,h отиди с навигационните клавиши до желаното място от текста
  • y копирай избрания текст в регистъра (еквивалента на Ctrl+C в Windows – копирането в клипборда)
  • d или го изтрий в регистъра (еквивалента на Ctrl + X в Windows)
  • yy или y или Y в нормален или визуален режим копирай текущия ред, не е задължително да бъде избиран
  • p натисни Esc за преминаване в нормален режим, отиди до мястото в текста (или друг буфер) където съдържанието на регистъра да бъде залепено, и за залепяне
  • u премахни последната промяна
  • Ctrl+r премахни последното премахване
Натисни Esc за преминаване в Нормален режим.

/tokenToSearch търси думата tokenToSearch НАДОЛУ в текста
n – прескача до следваща дума tokenToSearch НАДОЛУ
N – прескача до следваща дума tokenToSearch НАГОРЕ

?tokenToSearch търси думата tokenToSearch НАГОРЕ в текста
n – прескача до следваща дума tokenToSearch НАДОЛУ
Ctrl + o – прескача до предното положение на маркера
Ctrl + i – прескача до положение преди скока с Ctrl + o на маркера
N – прескача до следваща дума tokenToSearch НАГОРЕ

При маркер на позицията на често употребяваните за програмиране писмени знаци () [] {} и натискане на % маркерът прескача до съответния писмен знак, ако има такъв, ако няма си стои на място.

* Търси за думата под курсора в текста НАДОЛУ
# Търси за думата под курсора в текста НАГОРЕ

Бележка, че командите за търсене могат да се комбинират с останалите команди, т.е. при завършило търсене на tokenToSearch и натискане на dn програмата ще изтрие всичко от текущата позиция на курсора до първото срещане на tokenToSearch надолу.

Търсене и замяна на текст

[редактиране | редактиране на кода]

Натисни първо Esc за преминаване в Нормално състояние. Тази част е лесна за умеещите регулярни изрази.

:s/foo/bar/g           намери всеки низ 'foo' и го замени с  'bar' без да питаш дали да го замениш в текущия ред на курсора
:%s/foo/bar/g           намери всеки низ 'foo' и го замени с  'bar' без да питаш дали да го замениш в целия файл
:%s/foo/bar/gci         намери всеки низ 'foo' и го замени с  'bar' без да питаш дали да го замениш без да вземаш под внимание ГОЛЕМИ или малки или дуМИ с СмесеНИ по големина букви в целия файл

Изпълняване на външни команди

[редактиране | редактиране на кода]

Натисни Esc за преминаване в Нормален режим.

! commandToExecute – изпълнява командата commandToExecute в съответствие с шела, в който се намира, т.е. в Windows могат да бъдат изпълнявани типични за cmd.exe команди, a за Linux за типа shell от който VIM е извикан, за останалите операционни системи командите на техния shell.
! ShellCommandToRun -withParameters a b c --- изпълнение на шелова команда направо от командния ред на Vim

В повечето *nix шелове текстовият редактор може да бъде спрян временно с натискането на Ctrl-z, което би върнало потребителя обратно в шела. След изпълнение на командите, връщането на „сесията“ във Vim може да бъде направено с изпълнението на командата fg – това е свойство на шела, а не на текстовия редактор.

Ctrl-R Ctrl-F --- Копира името на файла под курсора в редактора на командния ред в команден режим.
Ctrl-R Ctrl-A -- копира текста от редактора в командния ред в команден режим.

Поддържане множество буфери

[редактиране | редактиране на кода]

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

Натисни Esc за преминаване в Нормален режим.
:buffers --- показва наличната информация за отворените буфери
Ctrl + W, W --- смяна от един отворен буфер в друг
CTRL-W q --- затваряне на отворен прозорец
:hide --- скрива текущия прозорец, но го държи отворен в буферния регистър

Задаване на собствени настройки

[редактиране | редактиране на кода]

Собствените настройки се задават най-общо с командата set [име на настройка]=[стойност] Някои често употребявани примери са:

Натисни Esc за преминаване в Нормален режим.
set winheight=999 --- задаване на височината на текущия прозорец да бъде 999 знака
synax on --- използвай цветово изобразяване на текста

Употреба като файлов мениджър

[редактиране | редактиране на кода]

Програмата може да бъде използвана като мениджър за управление на файлове, чрез изпълнение на командата :edit /name/of/the/folder/to/edit. В това състояние следните клавишни комбинации изпълняват следните действия:

- --- отива едно ниво по нагоре във файловата система
D --- изтрива файл
R --- преименуване на файл

Следните файлове съдържат метаданни за сесиите на програмата.

vim /root/.viminfo
vim /home/userName/.viminfo
vim /home/anotherUser/.viminfo

Как да променим цветовете на текущата цветова схема.

  • Провери за настройките на цветовете в следните файлове: /root/.vimrc или /home/usrname/.vimrc

set colorsheme=dark

  • Промяна на текущата цветова схема

/usr/share/vim/vim63/colors/darkblue.vim /comments

  • Избери шестнайсетичен (хексадецимален) номер за цвета на коментарите в кода ... – #40FF00 (google color table)