Вопрос: Быстрый отступ нескольких строк в vi


Должно быть тривиально, и это может быть даже в помощь, но я не могу понять, как ориентироваться. Как быстро вставить несколько строк в vi?


1955


источник


Ответы:


Использовать > команда. Для отступов 5 строк, 5 > > , Чтобы отметить блок строк и отступы, В J J > до отступа 3 строки (только vim). Чтобы отложить блок фигурных скобок, наведите курсор на одну из фигурных скобок и используйте > % ,

Если вы копируете блоки текста вокруг и должны выровнять отступ блока в новом местоположении, используйте ] п а не просто п , Это выравнивает вложенный блок с окружающим текстом.

Так же shiftwidthнастройка позволяет вам контролировать количество пробелов в отступе.


2306



Этот ответ суммирует другие ответы и комментарии по этому вопросу и добавляет дополнительную информацию, основанную на Документация Vim и Vim wiki , Для краткости этот ответ не различает команды Vi и Vim.

В приведенных ниже командах «повторный отступ» означает «строки отступа в соответствии с вашими настройки отступов «. shiftwidthявляется основной переменной, которая управляет отступом.

Общие команды

>>   Indent line by shiftwidth spaces
<<   De-indent line by shiftwidth spaces
5>>  Indent 5 lines
5==  Re-indent 5 lines

>%   Increase indent of a braced or bracketed block (place cursor on brace first)
=%   Reindent a braced or bracketed block (cursor on brace)
<%   Decrease indent of a braced or bracketed block (cursor on brace)
]p   Paste text, aligning indentation with surroundings

=i{  Re-indent the 'inner block', i.e. the contents of the block
=a{  Re-indent 'a block', i.e. block and containing braces
=2a{ Re-indent '2 blocks', i.e. this block and containing block

>i{  Increase inner block indent
<i{  Decrease inner block indent

Вы можете заменить {с }или B, например. =iBявляется допустимой командой отступа блока. Взгляни на «Отступ кодового блока» для приятного примера, чтобы попробовать эти команды.

Кроме того, помните, что

.    Repeat last command

, поэтому команды отступа можно легко и удобно повторять.

Повторные отступы полных файлов

Другая распространенная ситуация требует, чтобы отступы фиксировались в исходном файле:

gg=G  Re-indent entire buffer

Вы можете расширить эту идею до нескольких файлов:

" Re-indent all your c source code:
:args *.c
:argdo normal gg=G
:wall

Или несколько буферов:

" Re-indent all open buffers:
:bufdo normal gg=G:wall

В визуальном режиме

Vjj> Visually mark and then indent 3 lines

В режиме вставки

Эти команды применяются к текущей строке:

CTRL-t   insert indent at start of line
CTRL-d   remove indent at start of line
0 CTRL-d remove all indentation from line

Команды Ex

Они полезны, когда вы хотите отступать от определенного диапазона строк, не перемещая курсор.

:< and :> Given a range, apply indentation e.g.
:4,8>   indent lines 4 to 8, inclusive

Отступы с использованием маркеров

Другой подход маркеры :

ma     Mark top of block to indent as marker 'a'

... перемещать курсор в конечное местоположение

>'a    Indent from marker 'a' to current location

Переменные, которые управляют отступом

Вы можете установить их в своем .vimrc файл ,

set expandtab       "Use softtabstop spaces instead of tab characters for indentation
set shiftwidth=4    "Indent by 4 spaces when using >>, <<, == etc.
set softtabstop=4   "Indent by 4 spaces when pressing <TAB>

set autoindent      "Keep indentation from previous line
set smartindent     "Automatically inserts indentation in some cases
set cindent         "Like smartindent, but stricter and more customisable

Vim имеет интеллектуальный отступ, основанный на типе файлов. Попробуйте добавить это в свой .vimrc:

if has ("autocmd")
    " File type detection. Indent based on filetype. Recommended.
    filetype plugin indent on
endif

Рекомендации


883



Большой выбор будет

gg=G

это очень быстро, и все становится отступом ;-)


115



Также попробуйте это для С-отступы отступать, делать :help =для получения дополнительной информации:

={

Это приведет к автоматическому отступу текущего блока кода, в котором вы находитесь.

Или просто:

==

для автоматической подстановки текущей строки.


105



Key-Presses for more visual people:

  1. Enter Command Mode:
    Escape

  2. Move around to the start of the area to indent:
    hjkl

  3. Start a block:
    v

  4. Move around to the end of the area to indent:
    hjkl

  5. (Optional) Type the number of indentation levels you want
    0..9

  6. Execute the indentation on the block:
    >


73



In addition to the answer already given and accepted, it is also possible to place a marker and then indent everything from the current cursor to the marker. Thus, enter ma where you want the top of your indented block, cursor down as far as you need and then type >'a (note that "a" can be substituted for any valid marker name). This is sometimes easier than 5>> or vjjj>.


62



The master of all commands is
gg=G

This indents the entire file!

And below are some of the simple and elegant commands used to indent lines quickly in Vim or gVim.

To indent the current line
==

To indent the all the lines below the current line

=G

To indent n lines below the current line

n==

For example, to indent 4 lines below the current line

4==

To indent a block of code, go to one of the braces and use command

=%

These are the simplest, yet powerful commands to indent multiple lines.


60



Go to the start of the text

  • press v for visual mode.
  • use up/down arrow to highlight text.
  • press = to indent all the lines you highlighted.

29



As well as the offered solutions, I like to do things a paragraph at a time with >}


27