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


2158

사소한 것이어서 도움이 될 수도 있지만 탐색 방법을 알 수는 없습니다. vi에서 여러 줄을 빠르게 들여 쓰려면 어떻게합니까?

답변:


2552

>명령을 사용하십시오 . 다섯 줄을 들여 쓰기하려면 5>>. 한 줄의 블록을 표시하고 들여 쓰려면 Vjj>세 줄을 들여 쓰기하십시오 (Vim 만). 중괄호 블록을 들여 쓰려면 커서를 중괄호 중 하나에 놓고 >%블록 사용 내부 또는 어디서나 사용하십시오 >iB.

텍스트 블록을 복사하고 새로운 위치에 블록의 들여 쓰기를 정렬 해야하는 경우, ]p대신을 사용하십시오 p. 붙여 넣은 블록을 주변 텍스트와 정렬합니다.

또한이 shiftwidth설정을 통해 들여 쓰기 할 공간 수를 제어 할 수 있습니다.


77
> i} (내부 {} 블록 들여 쓰기)를 사용합니다. vim에서 작동합니다. vi에서 작동하는지 확실하지 않습니다.
R. Martinho Fernandes

11
내 문제 (gVim에서)는 명령이 2 개 이상의 공백을 들여 쓰기한다는 것입니다 (두 개의 공백을 원하지만 5 공백과 같이 들여 쓰기)
Kamran Bigdely

28
@Kamran : shiftwidth설정을 변경하는 방법을 참조하십시오 .
Greg Hewgill

4
@MattStevens : 현재이 현상에 대해 확장 된 토론을 찾을 수 meta.stackexchange.com/questions/9731/...
그렉 Hewgill

5
XML 파일에 붙여 넣은 일부 태그를 수정하는 것과 같이 시각적 블록을 여러 번 연속으로 들여 쓰기합니다. 매번 비주얼 모드에서 블록을 다시 선택하는 대신 'gv'를 사용하여 마지막 비주얼 블록을 재사용 할 수 있습니다. 참고 superuser.com/questions/220666/...
데이빗 만

958

이 답변에는이 질문에 대한 다른 답변과 의견이 요약되어 있으며 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', 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 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

전 명령

커서를 움직이지 않고 특정 범위의 줄을 들여 쓰려고 할 때 유용합니다.

:< 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

참고 문헌


13
이 답변과 그 위의 답변 모두 훌륭했습니다. 그러나 나는 이것이 마지막 명령을 반복하는 'dot'연산자를 상기시키기 때문에 +1했습니다. 이 키 를 계속 누를 필요없이 전체 블록에 여러 개의 shiftspaces (또는 들여 쓰기)를 들여 쓸 때 매우 유용합니다 >}. 고마워요
Amit

1
5 >> 들여 쓰기 5 줄 :이 명령은 5 줄이 아닌 5 번째 줄을 들여 씁니다 . 내 VIM 설정 때문일 수 있습니까, 아니면 문구가 잘못 되었습니까?
Wipqozn

1
@Wipqozn-이상합니다. Vim 7.2.330에서 테스트 한 다음 5 줄을 확실히 들여 쓰기합니다.
ire_and_curses

8
> 42gg ​​42 번 라인으로 향하는 곳에서 들여 쓰기
Steve

훌륭한 요약! 또한 "내부 블록 들여 쓰기"및 "모든 블록 들여 쓰기"(<i {> a {등)도 괄호와 괄호 (> a (<i] 등)와 함께 작동합니다. <> 외에도 d, c, y 등과도 작동합니다.)
aqn

123

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

gg=G

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


1
XML 파일을 사용하고 구문 강조를 설정했습니다. 입력 gg=G하면 위치 1부터 시작하여 모든 줄이 입력 됩니다. 모든 공백이 제거되었습니다. XML에만 해당되는 것이 있습니까?
ass

2
나는 set cindentvimrc에 있거나 :set cindent명령을 실행 하기 전에 실행 해야 한다고 생각 합니다
Amanuel Nega

3
cindent를 먼저 설정해야한다고 생각합니다. 그리고 @asgs 나는 이것이 cstyle 프로그래밍 언어에서만 작동한다고 생각합니다.
Amanuel Nega

110

C 들여 쓰기 들여 쓰기 에도 시도하십시오 . 수행 :help =자세한 내용은 :

={

현재 코드 블록을 자동으로 들여 쓰기합니다.

아니면 그냥 :

==

현재 줄을 자동 들여 쓰기


2
나를 위해 작동하지 않습니다. '현재 코드 블록에 있습니다'의 여는 중괄호 위의 줄에 커서를 덤프하십시오.
underscore_d

79

보다 시각적 인 사람들을위한 주요 언론 :

  1. 명령 모드 들어가기 :
    Escape

  2. 들여 쓰기 위해 영역의 시작 부분으로 이동하십시오.
    hjkl

  3. 블록을 시작하십시오 :
    v

  4. 들여 쓰기 위해 영역의 끝으로 이동하십시오.
    hjkl

  5. (선택 사항) 원하는 들여 쓰기 레벨 수를 입력하십시오.
    0..9

  6. 블록에서 들여 쓰기를 실행하십시오.
    >


2
이것은 훌륭하지만 탭이 아닌 공백을 사용합니다. 이 문제를 해결할 수있는 방법이 있습니까?
셰인 Reustle

12
탭 대신 공백을 사용하는 경우 공백을 사용하도록 들여 쓰기가 설정되어 있기 때문일 수 있습니다. =).
Kent Fredric

4
'expandtab'옵션이 꺼져있는 경우 (이것이 기본값 임) Vim은 <Tab> s를 최대한 들여 쓰기하여 들여 쓰기를합니다. (: help :>)
Kent Fredric

1
내가 변경 한 유일한 탭 / 공간 관련 vim 설정은 : set tabstop = 3입니다. >> : "<tab> <space> <space>"를 사용할 때마다 실제로 이것을 삽입합니다. 블록 들여 쓰기와 동일합니다. 어떤 아이디어?
Shane Reustle

3
"공백 대 탭"에 대해보고자하는 세 가지 설정은 1. tabstop 2. shiftwidth 3. expandtab입니다. "shiftwidth = 5 noexpandtab"이있을 수 있으므로 "tab"은 3 개의 공백이고 들여 쓰기 레벨은 "5"의 공백이므로 5는 1 개의 탭과 2 개의 공백으로 구성됩니다.
Kent Fredric

66

모든 명령의 주인은
gg=G

이것은 전체 파일을 들여 쓰기합니다!

그리고 아래는 Vim 또는 gVim에서 신속하게 줄을 들여 쓰는 데 사용되는 간단하고 우아한 명령 중 일부입니다.

현재 줄을 들여 쓰려면
==

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

=G

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

n==

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

4==

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

=%

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


3
이것은 단지에 vim하지 vi.
rojomoke

3
내 Solaris 또는 AIX 상자에는 없습니다. equals 키는 항상 표준 임시 매크로 할당 중 하나였습니다. (으) vim로 연결된을 (를)보고 vi있지 않습니까?
rojomoke

3
예, Linux에서 vi는 거의 항상 vim에 대한 링크입니다. vi에서 : ve 명령을 실행하십시오.
rojomoke

4
나는 명확하고 정확하며 간결한 이런 종류의 답변을 좋아합니다. 데비안 제시에서 나를 위해 일했다. 감사합니다, @SJain
digitai

1
vi가 아닌 vim을 사용하기 때문에이 답변이 여기에 있습니다. 감사.
Dan Nissenbaum '

66

이미 주어진 답변 외에도 지고 수락 된 마커를 배치 한 다음 현재 커서에서 마커까지 모든 것을 들여 쓸 수 있습니다.

따라서 ma들여 쓰기 된 블록의 상단을 원하는 곳에 입력 하고 원하는만큼 커서를 아래로 누른 다음 입력하십시오 >'a( " a"는 유효한 마커 이름으로 대체 될 수 있음에 유의하십시오 ). 때로는 5>>또는 보다 쉽습니다 vjjj>.


1
이것은 정말 유용합니다. 나는 이것으로 모든 것이 작동하는 것을 찾아야 할 것입니다. 나는 d' a와 y'a를 알고있다.
user606723

2
들여 쓰기하려는 줄 수를 세지 않아도되므로 매우 유용합니다.
ziggy

29

텍스트의 시작으로 이동

  • v시각 모드 를 위해를 누르십시오 .
  • up/ down화살표를 사용 하여 텍스트를 강조 표시하십시오.
  • =강조 표시된 모든 줄을 들여 쓰려면 누릅니다 .

28

제공된 솔루션뿐만 아니라 한 번에 단락을 수행하고 싶습니다. >}


2
그렇기 때문에 이것이 내 큰 친구 중 하나가 빈 줄에 공백이있는 이유입니다. 그들은 "단락"에 대한 vim의 개념을 엉망으로 만듭니다.
aqn

28

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

vnoremap < <gv

vnoremap > >gv

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


17
선택을 여러 번 들여 쓰려면을 누르기 만하면됩니다. 이전 명령을 반복합니다.
sundar-복 직원 모니카

2
의 문제입니다. 이 상황에서는 손가락을 움직여야합니다. @ mike의 솔루션 (내가 사용하는 것과 동일한 솔루션)을 사용하면 이미 들여 쓰기 키를 손가락으로 잡고 있고 스위치를 돌리고 다른 일을하는 대신 들여 쓰기를 유지하기 위해 계속 비틀 수 있습니다. 손을 움직여야하기 때문에 기간이 오래 걸리고, 두 번째, 다른 조작이기 때문에 더 많은 생각이 필요합니다.
masukomi

21

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

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

그때:

  • >한 번 들여 쓰기를 입력 합니다 (2 칸).
  • 유형 2>들여 쓰기를 두 번 합니다 (4 칸).
  • 3>세 번 들여 쓰기를 입력하십시오 (6 칸).
  • ...
  • <들여 쓰기를 한 번 입력 합니다 (2 칸).
  • 2<들여 쓰기를 두 번 입력 합니다 (4 칸).
  • 3<들여 쓰기를 세 번 입력 합니다 (6 칸).
  • ...

당신은 아이디어를 얻습니다.

( 빈 줄은 들여 쓰기되지 않으므로 친절하다고 생각합니다. )


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

:help visual-block
/indent

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


18

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

  • H화면 상단, L하단, M중간
  • n 개의G 라인으로 이동 N , G파일의 맨 아래로 단독 gg선두에
  • n다음 검색 일치 N로 이전으로 이동
  • } 단락 끝까지
  • % 괄호 또는 태그 종류 중 하나에 해당하는 다음 대괄호
  • enter 다음 줄로
  • 'x마크에 X 여기서 x는 문자 나 다른입니다 '.
  • 를 포함하여 더 많은, w그리고 W단어, $또는 0때문에하지 여기에 적용되지 않는 등 라인의 팁에 운동.

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

따라서, 당신이 화면 상단에 커서 위치에서 줄을 들여 쓰기 >H, >G파일의 맨 아래에 들여 쓰기합니다.

입력하는 대신, 만약 >H, 사용자가 입력 dH하면, 라인의 같은 블록을 삭제 한 후 cH등을 교체하기위한

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

이것은 Vim의 작동 방식입니다. 커서 이동과 명령 만 기억하고 혼합하는 방법 만 기억하면됩니다. 들여 쓰기들여 쓰기 된 경우 줄을 이동하는 것으로 해석되는 경우이 질문에 대한 나의 대답은 "들여 쓰기를 원하는 줄 블록의 한쪽 끝으로 이동 한 다음 블록의 >다른 쪽 끝으로 명령과 이동을 입력하십시오 "입니다 예쁜 인쇄에서와 같이 해석됩니다.=


2
vi / vim은 대부분 일관성 입니다. 예를 들어, D는 S 및 Y와 동일하게 동작하지 않습니다! :)
aqn

14

이 작업을 수행:

$vi .vimrc

그리고이 줄을 추가하십시오 :

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

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


13

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

:2,10norm 10i 

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

:%norm 5i_

또는 더 멋진 것 :

:%norm 2i[ ]

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

:1,20norm i#

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

:%norm 5x

1
이것은 파일의 왼쪽에서 시작합니다. 현재 블록의 위치가 아닙니다.
Eliethesaiyan

12

이 작업을 수행하는 빠른 방법 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전체 범위 내에서 모든 줄의 시작 부분에 삽입


12

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

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


11

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

  1. 텍스트 줄의 시작으로 이동 한 다음 입력하십시오 ma( a'm'ark의 레이블입니다 : 모든 문자 일 수 있음).
  2. 텍스트 및 유형의 끝 줄로 이동 mz하십시오 (다시 말하면 z모든 문자 일 수 있음)
  3. :'a,'z>또는 :'a,'z<들여 쓰기 또는 들여 쓰기 (단어입니까?)
  4. 짜잔! 텍스트가 이동합니다 (공백없이 빈 줄이 비어 있음)

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


10

:help left

에서 또는 지정된 선을 ex mode사용 하여 선을 정렬 할 수 있습니다 . 구체적 것 에서 [범위]에서 왼쪽 정렬 라인. 행의 들여 쓰기를 [들여 쓰기] (기본값 0)로 설정합니다.:left:le:left

:%le3또는 :%le 3 또는 :%left3또는:%left 3 세 구역으로 패딩하여 전체 파일을 정렬 할 것이다.

:5,7 le 3 3 줄로 채워서 5 ~ 7 행을 정렬합니다.

:le 어떤 가치도없이 :le 0 패딩이 0으로 정렬됩니다.

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


1
굉장히, 내가 찾던 것 (정확한 들여 쓰기를 무시하기 위해 특정 수의 공백을 삽입하는 방법-마크 다운 코드를위한 4 공백). 필자의 경우 시각 모드에서 특정 수의 줄을 들여 쓰기를 원했기 때문에 shift-v를 사용하여 줄을 강조 표시 한 다음 :'<,'>le4공백을 삽입하십시오. 감사!
Subfuzion

9

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

set expandtab
set tabstop=2
set shiftwidth=2

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

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

그리고 물론 "~ / .bashrc"에서 :

export PATH=$PATH:$HOME/bin

MacPorts 는 "~ / .profile"을 많이 사용하므로 PATH 환경 변수가 상당히 길어질 수 있습니다.


9

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

따라서 앞에 숫자를 입력 할 수 있습니다 ==. 줄 수만큼 들여 쓰기됩니다. 이것은 명령 모드입니다.

gg=G 전체 파일을 위에서 아래로 들여 쓰기합니다.


9

주석에서 사용하는 방법을 찾지 못했기 때문에 공유 할 것입니다 (Vim 만 생각합니다).

  1. Esc 명령 모드로 들어가기
  2. 들여 쓰기하려는 마지막 줄의 첫 문자로 이동
  3. Ctrl+ V블록 선택을 시작합니다
  4. 들여 쓰기하려는 첫 번째 줄의 첫 번째 문자로 이동
  5. Shift+ I특수 삽입 모드로 들어가기
  6. 들여 쓰기 할 공간 / 탭 수를 입력하십시오 (예 : 2 개)
  7. 프레스 Esc와 스페이스가 모든 줄에 나타납니다

들여 쓰기 / 탭 설정을 변경하지 않으려는 경우 vimrc또는 편집하는 동안 설정 을 변경하기 위해 기억하는 경우에 유용합니다 .

들여 쓰기를 위해 동일한 Ctrl+ V블록 선택을 사용하여 공백을 선택하고로 삭제하십시오 D.


9

왜 이와 같은 간단한 대답을 찾기가 어려운지 모르겠습니다 ...

나는 이것을 알기 위해 많은 노력을 기울여야했다. 매우 간단합니다.

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

    set cindent
    

    제대로 들여 쓰기하려는 파일에.

  • 일반 / 명령 모드 유형

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

8
:line_num_start,line_num_end>

예를 들어

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

더 많은 탭을 보려면 '>'기호를 늘리십시오.

예를 들어

14,21>>> for three tabs

1
이 문제를 해결하는 방법은 여러 가지가 있지만 vim에서 기본적으로 줄 번호가 표시되므로 수학이 필요하지 않으므로 구현하기가 가장 쉽습니다.
HoldOffHunger

@HoldOffHunger 줄 번호는 기본적으로 표시되지 않습니다. 당신은 사용할 필요가 :set number(그들이 토글 줄 번호에 해제 기본적으로), 또는 넣어 set number당신의 vimrc에.
DryLabRebel

7

파이썬을 많이 사용하면 블록을 두 개 이상 들여 쓰기 해야하는 경우가 종종 있습니다. 블록 선택 방법 중 하나를 사용 하여이 작업을 수행 한 다음 바로 가기 전에 들여 쓰기하려는 들여 쓰기 수를 입력하십시오.>

예를 들어, V5j3>5 줄을 세 번 들여 쓰기합니다. 들여 쓰기에 4 칸을 사용하면 12 칸입니다.


7

파일 형식의 모든 줄을 들여 쓴 Esc다음 G=gg.


6

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

옵션 1 : 비주얼 블록 모드를 사용하여 vi에서 3 개의 공백으로 코드 블록을 들여 씁니다.

  1. 들여 쓰기하려는 코드 블록을 선택하십시오. 이 사용하여 수행 Ctrl+V정상 모드에서 텍스트를 선택 아래로 arrowing. 선택된 상태에서 입력 :하면 선택한 텍스트 블록에 명령을 내립니다.

  2. 명령 행에 다음이 나타납니다. :'<,'>

  3. 들여 쓰기를 세 칸 띄우려면 입력 le 3하고 Enter 키를 누릅니다. 이것이 나타납니다 ::'<,'>le 3

  4. 선택한 텍스트는 즉시 세 칸 들여 쓰기됩니다.

옵션 2 : 비주얼 라인 모드를 사용하여 vi에서 3 개의 공백으로 코드 블록을 들여 씁니다.

  1. vi에서 파일을 엽니 다.
  2. 커서를 코드 위에 올려 놓으십시오
  3. 일반 모드에 있고 다음 키를 누르십시오.

    Vjjjj:le 3
    

    당신이 한 일에 대한 해석 :

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

    jjjj 네 줄 아래로 화살표.

    : vi에 강조 표시된 텍스트에 대한 지시 사항을 입력하게합니다.

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

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

옵션 3 : 시각적 블록 모드 및 특수 삽입 모드를 사용하여 들여 쓰기를 늘리십시오.

  1. vi에서 파일을 엽니 다.
  2. 커서를 코드 위에 올려 놓으십시오
  3. 일반 모드에서 다음 키를 누르십시오.

    Ctrl+V

    jjjj
    

    (스페이스 바를 다섯 번 누르십시오)

    Esc Shift+i

    강조 표시된 모든 텍스트에는 추가로 5 개의 공백이 들여 쓰기됩니다.


6

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

  • 이동하려면 블록의 앞쪽으로 이동하십시오 (위 또는 아래).
  • Ctrl+를 누르십시오V 를 비주얼 블록 모드로 들어갑니다.
  • 행 앞의 열을 선택하여 탐색하십시오.
  • 보도 I( Shift+I )를 삽입 모드로 들어갑니다.
  • 공백을 입력하십시오.
  • 를 누릅니다 Esc. 모든 줄이 바뀝니다.

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

  • 줄 중간에.
  • 모든 줄에 문자열을 삽입합니다.
  • 열을 변경하려면 ( c대신 사용 I)
  • 양키, 삭제, 대체 등 ...

이 작업은 번거롭지 만 기본 VIM 외부에서 서식을 지정하는 경우 (예 : vim-prettier기본 들여 쓰기 엔진 대신 사용 )가는 방법입니다. >그렇지 않으면를 사용 하면 Prettier가 수행 한 서식이 완전히 정돈됩니다.
oligofren

재미 있지만, 성가신 일이 있습니다. 이것은 유니 태 스커가 아닙니다! 이 방법을 배우는 것은 들여 쓰기 이외의 용도가 많습니다.
sqqqrly

나는 무슨 일이 일어나고 있는지, 내가 선택한 줄과 내가하고있는 행동을 볼 수 있으며, 단지 일종의 vim incantation을 입력하는 것이 아니라 받아 들인 대답보다 낫습니다.
user4052054

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

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

  • 전체 파일 : gg+ =+G

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


4

모든 파일을 4 씩 들여 쓰려면

esc 4G=G

3
...뭐? '4 칸 들여 쓰기'? 아니요, 이것은 4 행으로 이동 한 다음 현재 선택된 들여 쓰기 모드 (있는 경우)를 사용하여 파일 끝에서 끝까지 모든 것을 들여 씁니다.
underscore_d

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.