Редактор vi - основни команди

Режими на редактора

 1.  Екранен режим (режим на навигация). Основен режим на работа.  Курсорът е в полето на текста.  Въведените символи се тълкуват като команди към редактора.
 2.  Kоманден режим. Курсорът е на най-долния ред.  Въведените символи формират команди.
 3.  Режим на вмъкване на текст. Въведените символи формират текст.  Курсорът указва позицията на вмъкване на текста.

Стартиране на редактора
_______________________________________________________________________
Команда			Описание
_______________________________________________________________________
vi [опции]			начало на редакция с празен буфер
vi [опции] {file ..}		начало на редакция на един или повече файлове
vi [опции] -t {tag}		редактиране на файла, свъързан с {tag}
_______________________________________________________________________

Опции при стартиране на редактора
_______________________________________________________________________
Команда			Описание
_______________________________________________________________________
+[num]	премества курсора на ред [num] (подразбиране последния)
+/{pat} {file ..}			премества курсора на първото съвпадение с {pat}
-v				режим "само за четене" (View). Предполага -n
-b				двоичен режим
-r	възстановяване на прекъсната сесия от '.swp' файл
_______________________________________________________________________

Редактиране на файл
_______________________________________________________________________
Команда			Описание
_______________________________________________________________________
:e	Редактиране на текущия файл, освен ако е променен
:e!	Редактиране на текущия файл, независимо от промените
:e[dit] {file}	Редактиране на файла {file}, ако на са правени промени.
:e[dit]! {file}	Редактиране на файла {file}. Промените ще се загубят.
:f[ile]	Извеждане името на текущия файл и позицията на курсора.
:f[ile] {name}			Установи името на текущия файл на {name}.
:files				Показване имената на алтернативните файлове.
_______________________________________________________________________

Използване на списък от файлове
_______________________________________________________________________
Команда			Описание
_______________________________________________________________________
:ar[gs]	Извеждане списъка на файловете. Текущия файл е засветен
:wn[ext][!]	Записване на файла и редактиране на следващия файл.
:wn[ext][!] {file}	Записване на във {file} и редактиране на следващия файл, освен ако файлът съществува. ! припокрива съществуващия файл.
_______________________________________________________________________

Запис и излизане
_______________________________________________________________________
Команда				Описание
_______________________________________________________________________
:[range]w[rite][!]			Запис на текущия файл.
:[range]w[rite] {file}	Запис във файл {file}, ако той вече не съществува.
:[range]w[rite]! {file}	Запис във файл {file}. Презапис на съществуващия.
:[range]w[rite][!] >>			Добавяне към текущия файл.
:[range]w[rite][!] >>{file}		Добавяне към файла {file}.
:[range]w[rite] !{cmd}	Изпълнява {cmd} с редове [range] като стандартен вход.
:q[uit]					Изход, ако не са правени промени.
:q[uit]!	Задължителен изход, промените се загубват.
:wq[!]					Запис на текущия файл и изход.
:wq[!] {file}				Запис във файла {file} и изход.
:x[it][!] [file]	Както ":wq" но запис само при направени промени
ZZ					Както ":x".
_______________________________________________________________________

Придвижване наляво и надясно
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  h	наляво. По същия начин действат CTRL-H, BS, стрелка наляво
N  l	надясно. По същия начин действат SPACE, стрелка надясно
   0			към първия символ на реда
   ^			към първия непразен символ на реда
N  $			към последния символ на реда (N-1 реда по-надолу)
N  f<char>		към N-тото срещане на символа <char> надясно
N  F<char>		към N-тото срещане на символа <char> наляво
N  t<char>		до преди N-тото срещане на символ <char> надясно
N  T<char>		до преди N-тото срещане на символ <char> наляво
N  ;			повтаряне на последната f, F, t или T команда N пъти
N  ,	повтаряне последната f, F, t или T команда в обратната посока
_______________________________________________________________________

Придвижване нагоре и надолу
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  k			нагоре (също и CTRL-P или стрелка нагоре)
N  j			надолу (също и CTRL-J, CTRL-N, LF или стрелка надолу)
N  -			нагоре, към първия непразен символ
N  +	надолу, към първия непразен символ (също и CTRL-M или CR)
N  _			N - 1 реда надолу, към първия непразен символ
N  G	към ред N (по подразбиране последния), първия непразен символ
N  %			към реда, разположен N процента надолу във файла.
_______________________________________________________________________

Придвижване по думи
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  w			N думи напред
N  W			N думи, разделени с празни символи, напред
N  e			напред към края на N-тата дума
N  E	напред към края на N-тата дума, разделена с празни символи
N  b			N думи назад
N  B			N думи, разделени с празни символи, назад
_______________________________________________________________________

Движение по текстови обекти
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  )			N изречения напред
N  (			N изречения назад
N  }			N параграфа напред
N  {			N параграфа назад
N  ]]			N секции напред
N  [[			N секции назад
N  ][			N секции (започвайки с <}>) напред
N  []			N секции (започвайки с <}>) назад
N  [(  [{			N пъти назад до незатворена скоба <(> или <{>
N  ])  ]}			N пъти напред до незатворена скоба <(> или <{>
_______________________________________________________________________

Диапазони от редове
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
,			разделител на адресите
{number}		абсолютен номер на ред
$			последният ред във файла
%			еквивалент на 1,$ (целият файл)
/{шаблон}		следващият ред, който съвпада с {шаблон}
?{шаблон}		предишният ред, който съвпада с {шаблон}
+[num]			добави [num] към предишното число (по подразбиране 1)
-[num]			извади [num]  от предишното число (по подразбиране 1)
_______________________________________________________________________

Търсене на шаблони
_______________________________________________________________________
Команда			Описание
_______________________________________________________________________
N  /{шаблон}[/]		търсене напред за N-тото срещане на шаблона
N  ?{шаблон}[?]		търсене назад  за N-тото срещане на шаблона
N  /				повтаряне последното търсене напред
N  ?				повтаряне последното търсене назад
N  n				повтаряне последното търсене
N  N				повтаряне последното търсене назад
_______________________________________________________________________

Специални символи в шаблоните
_______________________________________________________________________
специален	неспециален
_______________________________________________________________________
съпоставя се с кой да е символ			.		\.
съпоставя се с началото на реда			^		^
съпоставя се с края на реда				$		$
съпоставя се с началото на дума			\<		\<
съпоставя се с края на дума				\>		\>
съпоставя се с единичен символ от диапазона		[a-z]		\[a-z]
съпоставя се с единичен символ извън диапазона	[^a-z]		\[^a-z]
съпоставя се с 0 или повече предшестващи шаблони	*		\*
съпоставя се с 1 или повече предшестващи шаблони	\+		\+
съпоставя се с 0 или 1 предшестващи шаблони	\=		\=
разделя две алтернативи				\|		\|
групира шаблони в един атомарен шаблон		\(\)		\(\)
_______________________________________________________________________

Различни премествания
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
m<a-zA-Z>		маркира текущата позиция с маркер <a-zA-Z>
`<a-zA-Z>		преход към позицията, отбелязана с маркер <a-zA-Z>
``			преход към позицията отпреди последния преход
%			към отварящата скоба, коментар или #if/#else/#endif
на този ред и преход към неговия съответен
_______________________________________________________________________

Превъртане на екрана
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  CTRL-E		прозорецът N реда надолу (N реда повече)
N  CTRL-D		прозорецът N реда надолу (по подразбиране половин екран)
N  CTRL-F		прозорецът N екрана напред (надолу)
N  CTRL-Y		прозорецът N реда нагоре
N  CTRL-U		прозорецът N реда нагоре (по подразбиране половин екран)
N  CTRL-B		прозорецът N екрана назад (нагоре)
   z<CR> или zt 	преизвеждане, текущият ред най-горе на екрана
   z.    или zz		преизвеждане, текущият ред в центъра на екрана
   z-    или zb		преизвеждане, текущият ред в края на екрана
_______________________________________________________________________

Вмъкване на текст
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  a			добави текст след курсора (N пъти)
N  A			добави текст в края на реда (N пъти)
N  I			вмъкване текст преди курсора (N пъти)
N  I			вмъкване текст преди първия непразен символ на реда (N пъти)
N  o			отваряне нов ред под текущия ред, добави текст (N пъти)
N  O			отваряне нов ред над текущия ред, добави текст (N пъти)
:r [file]			вмъкване съдържанието на файла [file] под курсора
:r!{command}		вмъкване стандартния изход от командата {command} под курсора
_______________________________________________________________________

Промяна на текст
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  R			влизане в режим на заместване (повтаряне въведения текст N пъти)
N  cc			промяна на N реда
N  C			промяна на до края на реда (и още N-1 реда)
N  s			промяна на N символа
N  S			промяна на N реда
N  r<char>		замени N символа с <char>
N  ~			промяна на N символа (главни/малки) и премести курсора
N  <<			преместване N реда с един shiftwidth наляво
N  >>			преместване N реда с един shiftwidth надясно
_______________________________________________________________________

Изтриване на текст
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  x			изтриване N символа над и след курсора
N  X			изтриване N символа преди курсора
N  dd			изтриване N реда
N  D			изтриване до края на реда (и още N-1 реда)
N  J			сливане N-1 реда (изтриване символите за край на ред)
_______________________________________________________________________

Копиране и преместване на текст
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
   "<char>		използване на регистъра с име 'char' за следващата команда
N  y{motion}		запомняне на текста, преместен с {motion}, в регистъра
N  yy			запомняне на N реда в регистър
N  Y			запомняне на N реда в регистър
N  p			вмъкване на регистъра след позицията на курсора (N пъти)
N  P			вмъкване на регистър преди позицията на курсора (N пъти)
_______________________________________________________________________

Повтаряне на команди
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
N  .			повтаряне на последната промяна (с брой заменен с N)
:[range]g[lobal]/{шаблон}/[cmd]
изпълнение на командата [cmd] (подразбиране :p) върху редове
от диапазона [range] които съвпадат с шаблона {pattern}
:[range]g[lobal]!/{pattern}/[cmd]
изпълнение командата [cmd] (по подразбиране :p) върху редове
от диапазона [range] които НЕ съвпадат с шаблона {pattern}
_______________________________________________________________________

Опции
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
:se[t]			показване всички променени опции.
:se[t] all		показване всички опции.
:se[t] {option}		включва алтерн. опция, показва символните и числовите.
:se[t] no{option}	изключва алтернативна опция.
:se[t] inv{option}	превключва алтернативна опция.
:se[t] {option}={value}	установява символна или числова опция на {value}.
:se[t] {option}?		показва стойността на опцията {option}.
_______________________________________________________________________

Други команди
_______________________________________________________________________
Команда		Описание
_______________________________________________________________________
   u			отменя последните промени
   CTRL-R		прилагане последните N отменени промени
:sh			стартиране на команден интерпретатор
:!{command}		изпълнение на команда {command}
K			предай думата под курсора на програмата 'keywordprg'
CTRL-L			изтрива и преизвежда екрана
CTRL-G			показване пълното име на текущия файл и позицията на курсора
CTRL-C			прекъсване на търсенето
<DEL>			изтриване последния символ при въвеждане на число пред команда