etc./StackOverFlow

vi에서 여러 줄 빠르게 들여쓰기

청렴결백한 만능 재주꾼 2021. 11. 26. 06:55
반응형

질문자 :Allain Lalonde


사소해야 하고 도움말에 있을 수도 있지만 탐색 방법을 알 수 없습니다. vi에서 여러 줄을 빠르게 들여쓰려면 어떻게 해야 합니까?



> 명령을 사용합니다. 다섯 줄을 들여쓰려면 5 > > . 줄 블록을 표시하고 들여쓰려면 V j j > 세 줄을 들여씁니다(Vim만 해당). 중괄호 블록을 들여쓰려면 커서를 중괄호 중 하나에 놓고 > % 또는 블록 내부의 아무 곳에서나 사용 > i B 를 사용하십시오 .

당신은 대신 페이지의 새로운 위치, 사용] 페이지에서 블록의 들여 쓰기를 정렬 주변 텍스트와 필요의 블록을 복사하는 경우. 이렇게 하면 붙여넣은 블록이 주변 텍스트와 정렬됩니다.

또한 shiftwidth 설정을 사용하여 들여쓰기할 공백 수를 제어할 수 있습니다.


Greg Hewgill

이 답변은 이 질문에 대한 다른 답변과 의견을 요약하고 Vim 문서Vim 위키를 기반으로 하는 추가 정보를 추가합니다. 간결함을 위해 이 답변은 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', ie the contents of the block =a{ Re-indent 'a block', ie block and containing braces =2a{ Re-indent '2 blocks', ie 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 three 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 eg :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

참고문헌


ire_and_curses

큰 선택은 다음과 같습니다.

 gg=G

정말 빠르며 모든 것이 들여 쓰기됩니다 ;-)


Johan

C 들여 쓰기에도 이것을 시도하십시오. Do :help = 더 많은 정보를 원하시면:

={

그러면 현재 코드 블록이 자동 들여쓰기됩니다.

또는 그냥:

==

현재 줄을 자동 들여 쓰기합니다.


svec

보다 시각적인 사람들을 위한 키 프레스:

  1. 명령 모드 시작:
    탈출하다

  2. 들여쓰기할 영역의 시작 부분으로 이동합니다.
    h j k l

  3. 블록 시작:
    V

  4. 들여쓸 영역의 끝으로 이동합니다.
    h j k l

  5. (선택 사항) 원하는 들여쓰기 수준 수를 입력합니다.
    0..9

  6. 블록에서 들여쓰기를 실행합니다.
    >


Kent Fredric

모든 명령의 마스터는
gg=G

이것은 전체 파일을 들여씁니다!

다음은 Vim 또는 gVim에서 줄을 빠르게 들여쓰기하는 데 사용되는 간단하고 우아한 명령 중 일부입니다.

현재 줄을 들여쓰려면
==

현재 줄 아래의 모든 줄을 들여쓰려면

=G

현재 줄 아래에서 n 줄 들여쓰기

n==

예를 들어 현재 줄 아래 4줄 들여쓰기

4==

코드 블록을 들여쓰려면 중괄호 중 하나로 이동하여 명령을 사용하십시오.

=%

여러 줄을 들여쓰는 가장 간단하면서도 강력한 명령입니다.


Sagar Jain

이미 제공 되고 수락된 답변 외에도 마커를 배치한 다음 현재 커서에서 마커까지 모든 항목을 들여쓸 수도 있습니다.

따라서 들여쓴 블록의 상단을 원하는 위치에 ma >'a 를 입력합니다(" a "는 유효한 마커 이름으로 대체될 수 있음). 이것은 때때로 5>> 또는 vjjj> 보다 쉽습니다.


Daniel Spiewak

텍스트의 시작 부분으로 이동

  • v 를 눌러 비주얼 모드를 선택합니다.
  • / 아래 화살표를 사용하여 텍스트를 강조 표시합니다.
  • 강조 표시한 모든 줄을 들여쓰려면 = 를 누릅니다.

Michael Durrant

블록을 선택하고 > 를 사용하여 들여쓰기하면 들여쓰기된 다음 일반 모드로 돌아갑니다. 내 .vimrc 파일에 다음이 있습니다.

 vnoremap < <gv vnoremap > >gv

선택 항목을 원하는 만큼 들여쓸 수 있습니다.


Michael Ekoka

>} 하여 한 번에 한 단락씩 작업하는 것을 좋아합니다.


Paul Tomblin

2개의 공백을 사용하여 코드를 들여쓰기한다고 가정합니다. 유형:

 :set shiftwidth=2
  • v 입력(시각적 블록 편집 모드로 들어가기 위해)
  • 화살표 키(또는 h / j / k / l )로 커서를 이동하여 들여쓰기 또는 들여쓰기를 취소할 줄을 강조 표시합니다.

그 다음에:

  • 한 번만 들여쓰려면 > 를 입력합니다(공백 2개).
  • 두 번 들여쓰려면 2 > 를 입력합니다(공백 4개).
  • 3 > 을 입력하여 세 번(공백 6개) 들여씁니다.
  • ...
  • 한 번만 들여쓰지 않으려면 < 를 입력합니다(공백 2개).
  • 두 번 들여쓰기를 취소하려면 2 < 를 입력합니다(공백 4개).
  • 3 < 을 입력하여 3번(공백 6개) 들여쓰기를 취소합니다.
  • ...

당신은 아이디어를 얻을.

( 빈 줄은 들여쓰기가 되지 않아 좋은 것 같습니다. )


블록 들여쓰기에 대한 (g)vim 문서에서 답을 찾았습니다.

 :help visual-block /indent

명령에 개수를 지정하려면 연산자 문자 "v{move-around}3>"을 입력하기 직전에 이 작업을 수행합니다(3줄 들여쓰기를 오른쪽으로 이동).


John Sonderson

Vim UI의 장점은 일관성입니다. 편집 명령은 명령과 커서 이동으로 구성됩니다. 커서 이동은 항상 동일합니다.

  • H 에서 화면 상단, L 에서 하단, M 에서 중간
  • n G 는 줄 n 으로 이동, G 만 파일 맨 아래로, g g 는 맨 위로 이동
  • n 은 다음 검색 일치 항목으로 이동하고 N 은 이전 검색 항목으로 이동합니다.
  • } 단락 끝까지
  • % 다음에 일치하는 대괄호, 괄호 또는 태그 종류 중 하나
  • 다음 줄에 입력
  • 'X로 표시 여기서 x x는 문자 나 다른 ' .
  • 단어의 경우 wW , 선의 끝 부분에 대한 $ 또는 0 등을 포함하여 선 이동이 아니기 때문에 여기에 적용되지 않습니다.

따라서 vim을 사용하려면 커서를 이동하는 방법과 > 들여쓰기(및 < "내어쓰기")와 같은 명령 레퍼토리를 기억해야 합니다.

따라서 커서 위치에서 화면 위쪽으로 줄을 들여쓰려면 > H , > G 를 사용하여 파일 아래쪽으로 들여씁니다.

> H 를 입력하는 대신 d H 를 입력하면 동일한 라인 블록을 삭제하고, 이를 대체하기 위해 c H 등을 입력합니다.

일부 커서 이동은 특정 명령에 더 적합합니다. 특히 % 명령은 전체 HTML 또는 XML 블록을 들여쓸 때 편리합니다. 파일에 구문이 강조 표시된 경우( :syn on ) 태그 텍스트에 커서를 설정합니다 (예: <div>의 "i"에서 > % 를 입력하면 닫는 </div> 태그까지 들여쓰기됩니다.

이것이 Vim이 작동하는 방식입니다. 커서 이동과 명령, 그리고 이들을 혼합하는 방법만 기억하면 됩니다. 따라서 이 질문에 대한 내 대답 은 들여쓰기 가 줄 이동으로 해석되는 경우 "들여쓰기할 줄 블록의 한쪽 끝으로 이동 한 다음 > 명령을 입력하고 블록의 다른 쪽 끝으로 이동"입니다. = 들여 쓰기 가 pretty-printing으로 해석되는 경우.


Juan Lanus

norm i 명령을 사용하여 줄의 시작 부분에 주어진 텍스트를 삽입할 수 있습니다. 2-10행 앞에 10개의 공백을 삽입하려면:

 :2,10norm 10i

명령 끝에 공백 문자가 있어야 함을 기억하십시오. 이것은 우리가 삽입하려는 문자가 될 것입니다. 예를 들어 5개의 밑줄 문자가 있는 파일의 모든 줄을 들여쓰려면 다른 텍스트로 줄을 들여쓸 수도 있습니다.

 :%norm 5i_

또는 더 멋진 것:

 :%norm 2i[ ]

더 실용적인 예는 # 문자로 Bash/Python/etc 코드를 주석 처리하는 것입니다.

 :1,20norm i#

다시 들여쓰려면 i 대신 x 를 사용하십시오. 예를 들어, 모든 줄에서 처음 5자를 제거하려면:

 :%norm 5x

Nykakin

이 작업을 수행:

 $vi .vimrc

그리고 다음 줄을 추가하십시오.

 autocmd FileType cpp setlocal expandtab shiftwidth=4 softtabstop=4 cindent

이것은 cpp 파일에만 해당됩니다. 파일 유형을 수정하여 다른 파일 유형에 대해서도 이 작업을 수행할 수 있습니다.


pankaj ukumar

:line_num_start,line_num_end>

예를 들어,

 14,21> shifts line number 14 to 21 to one tab

더 많은 탭을 보려면 '>' 기호를 늘립니다.

예를 들어,

 14,21>>> for three tabs

attaboyabhipro

VISUAL MODE 사용하여 이를 수행하는 빠른 방법은 코드 블록을 주석 처리하는 것과 동일한 프로세스를 사용합니다.

shiftwidth set 지시문을 사용하지 않으려는 경우에 유용하며 TABS, SPACES 또는 기타 문자로 작업할 수 있을 만큼 충분히 유연합니다.

  1. 블록의 시작 부분에 커서 위치 지정
  2. v로 전환 -- VISUAL MODE --
  3. 들여쓸 텍스트 선택
  4. 유형 : 프롬프트로 전환하려면
  5. 3개의 선행 공백으로 대체:

    :'<,'>s/^/ /g

  6. 또는 선행 탭으로 교체:

    :'<,'>s/^/\t/g

  7. 간략한 설명:

    '<,'> - 시각적으로 선택된 범위 내

    s/^/ /g - 전체 범위 내에서 모든 줄의 시작 부분에 3개의 공백을 삽입합니다.

    (또는)

    s/^/\t/g - 전체 범위 내에서 모든 줄의 시작 부분에 Tab


Eric Kigathi

>} 또는 >{ 현재 줄에서 다음 단락까지 들여쓰기

<} 또는 <{ 동일한 들여쓰기 해제


jash

들여쓰기를 위해 텍스트를 표시하고 싶습니다.

  1. (: 그것은 어떤 편지 될 수있는가 'm'ark에서 레이블) 다음 m a를 입력 한 텍스트의 라인의 시작으로 이동
  2. 텍스트의 끝 줄로 이동하여 m z를 입력합니다(다시 말하지만 z 는 모든 문자일 수 있음).
  3. :'a,'z> 또는 :'a,'z< 들여쓰기 또는 내어쓰기(이 단어인가요?)
  4. 짜잔! 텍스트가 이동됨(빈 줄은 공백 없이 비어 있음)

추신: :'a,'z 기술을 사용하여 행, 숫자 또는 %를 사용할 수 있는 모든 작업(d, y, s/// 등)의 범위를 표시할 수 있습니다.


SteveO

나에게 MacVim(Visual) 솔루션은 마우스로 선택하고 ">"를 누르는 것이었지만 탭 대신 공백을 좋아하기 때문에 "~/.vimrc"에 다음 줄을 넣은 후:

 set expandtab set tabstop=2 set shiftwidth=2

또한 명령줄(Terminal.app)에서 MacVim을 호출할 수 있는 것이 유용하므로 "macvim"이라는 스크립트를 배치하는 다음 도우미 디렉토리 "~/bin"이 있습니다.

 #!/usr/bin/env bash /usr/bin/open -a /Applications/MacPorts/MacVim.app $@

물론 "~/.bashrc"에서:

 export PATH=$PATH:$HOME/bin

MacPorts 는 "~/.profile"을 많이 엉망으로 만들기 때문에 PATH 환경 변수가 상당히 길어질 수 있습니다.


mda

:help left

ex mode :left 또는 :le 를 사용하여 지정된 양만큼 줄을 정렬할 수 있습니다. 특히 :left[범위]의 줄을 왼쪽으로 정렬합니다. 줄의 들여쓰기를 [indent](기본값 0)로 설정합니다.

:%le3 또는 :%le 3 또는 :%left3 또는 :%left 3 은 세 개의 공백으로 채워 전체 파일을 정렬합니다.

:5,7 le 3 은 5번부터 7번 줄을 세 개의 공백으로 채워 정렬합니다.

:le 값이 없거나 :le 0 은 패딩 0으로 왼쪽 정렬됩니다.

이것은 Vim과 gVim에서 작동합니다.


zundarz

5== 는 현재 커서 위치에서 다섯 줄을 들여씁니다.

== 앞에 아무 숫자나 입력할 수 있습니다. 줄 수를 들여씁니다. 이것은 명령 모드입니다.

gg=G 는 전체 파일을 위에서 아래로 들여씁니다.


rohitkadam19

댓글에서 사용하는 방법을 찾지 못했기 때문에 공유하겠습니다(Vim만 해당).

  1. Esc 명령 모드로 들어가기
  2. 들여쓰려는 마지막 줄의 첫 번째 문자로 이동
  3. Ctrl + V 블록 선택 시작
  4. 들여쓰려는 첫 번째 줄의 첫 번째 문자로 이동
  5. 특수 삽입 모드로 전환하려면 Shift + I
  6. 들여쓰기가 필요한 만큼의 공백/탭을 입력합니다(예:
  7. Esc 키를 누르면 모든 줄에 공백이 나타납니다.

vimrc 에서 들여쓰기/탭 설정을 변경하고 싶지 않거나 편집하는 동안 변경하도록 기억하려는 경우에 유용합니다.

들여 쓰기를 취소하려면 동일한 Ctrl + V 블록을 사용하여 공백을 선택하고 D로 삭제합니다.


NickSoft

이렇게 간단한 답을 찾기가 왜 이렇게 어려운지 모르겠네요...

나 자신도 이것을 알기 위해 많은 고군분투를 해야 했다. 매우 간단합니다.

  • 홈 디렉토리에서 .vimrc 파일을 편집하십시오.
  • 이 줄 추가

     set cindent

    들여 쓰기를 원하는 파일에.

  • 일반/명령 모드 유형에서

     10== (This will indent 10 lines from the current cursor location) gg=G (Complete file will be properly indented)

Kamlesh Karwande

Python을 많이 사용하다 보니 블록을 두 개 이상의 들여쓰기로 이동해야 하는 경우가 자주 있습니다. 블록 선택 방법 중 하나를 사용하여 이 작업을 수행한 다음 >

예를 들어, V5j3> 은 5행을 3번 들여씁니다. 이는 들여쓰기에 4개의 공백을 사용하는 경우 12개의 공백입니다.


John La Rooy

파일 형식의 모든 줄을 들여쓰려면 EscG=gg를 차례로 입력 합니다.


kapil

블록 모드 시각적 선택을 사용합니다.

  • 이동할 블록 앞(상단 또는 하단)으로 이동합니다.
  • Ctrl + V 를 눌러 시각적 차단 모드로 들어갑니다.
  • 줄 앞의 열을 탐색하여 선택합니다.
  • I ( Shift + I )를 눌러 삽입 모드로 들어갑니다.
  • 공백을 입력하십시오.
  • Esc 키를 누릅니다. 모든 라인이 이동합니다.

이것은 유니태스커가 아닙니다. 효과가있다:

  • 줄 중간에.
  • 모든 행에 임의의 문자열을 삽입합니다.
  • 열을 변경하려면( I 대신 c 사용).
  • 잡아당기다, 삭제하다, 대체하다 등등...

sqqqrly

  • 코드 블록의 경우 {}: = + %

  • 선택한 라인의 경우: Shift + v 위쪽/아래쪽 화살표 키를 사용하여 선택한 다음 = 를 누릅니다.

  • 전체 파일의 경우: gg + = + G

참고: 'gg'는 줄 1로 이동을 의미하고, '='는 들여쓰기 명령이며, 'G'는 커서를 파일 끝으로 이동합니다 .


Kulamani

vi에서 강조 표시된 코드를 여러 공백으로 즉시 들여쓰는 방법:

옵션 1: Visual Block 모드를 사용하여 vi의 코드 블록을 3개의 공백으로 들여쓰기:

  1. 들여쓰려는 코드 블록을 선택합니다. 일반 모드에서 Ctrl+V 를 사용하고 아래로 화살표를 사용하여 텍스트를 선택합니다. 선택된 상태에서 : 를 입력하여 선택한 텍스트 블록에 명령을 내립니다.

  2. 명령줄에 다음이 표시됩니다. :'<,'>

  3. 들여쓰기를 공백 3개로 설정하려면 le 3 을 입력하고 Enter 키를 누릅니다. 다음과 같이 표시됩니다. :'<,'>le 3

  4. 선택한 텍스트는 즉시 공백 3칸으로 들여쓰기됩니다.

옵션 2: Visual Line 모드에서 vi의 코드 블록을 3개의 공백으로 들여쓰기:

  1. vi에서 파일을 엽니다.
  2. 일부 코드 위에 커서를 놓습니다.
  3. 일반 모드에서 다음 키를 누릅니다.

     Vjjjj:le 3

    당신이 한 일에 대한 해석:

    V 는 텍스트 선택 시작을 의미합니다.

    jjjj 4줄 아래로 화살표를 사용하여 4줄을 강조 표시합니다.

    : 강조 표시된 텍스트에 대한 지침을 입력할 것임을 vi에 알립니다.

    le 3 은 강조 표시된 텍스트를 세 줄 들여쓰기를 의미합니다.

    선택한 코드는 즉시 3칸 들여쓰기로 증가 또는 감소합니다.

옵션 3: Visual Block 모드와 특수 삽입 모드를 사용하여 들여쓰기 늘리기:

  1. vi에서 파일을 엽니다.
  2. 일부 코드 위에 커서를 놓습니다.
  3. 일반 모드에서 다음 키를 누릅니다.

    Ctrl+V

     jjjj

    (스페이스바를 다섯 번 누름)

    Esc Shift+i

    강조 표시된 모든 텍스트는 추가로 5칸 들여쓰기됩니다.


Eric Leschinski

  1. "SHIFT + v"를 눌러 VISUAL LINE 모드로 들어갑니다.
  2. 들여쓰려는 텍스트를 선택하되 커서 키 또는 "j" 및 "k" 키를 사용합니다.
  3. 오른쪽 들여쓰기를 하려면 "SHIFT + 점"(> 문자)을 누르십시오. 왼쪽으로 들여쓰려면 "SHIFT + 쉼표"(< 문자)를 누르십시오.

출처: https://www.fir3net.com/UNIX/General/how-do-i-tab-multiple-lines-within-vi.html


ABN

모든 파일을 4만큼 들여쓰려면:

 esc 4G=G

Michael

출처 : http:www.stackoverflow.com/questions/235839/indent-multiple-lines-quickly-in-vi

반응형