카테고리 보관물: vi

vi

한 줄에 하나씩 순차적 번호 목록을 생성하려면 어떻게해야합니까? 숫자를 여백에 표시하고 싶지 않습니다.

빈 슬레이트에서 시작하여 포함 된 문서를 얻는 방법

1
2
3
4
5
6
7
8
9
10
…
100

분명히, 나는이 숫자를 여백에 표시하고 싶지 않습니다. 문서 자체에 삽입하고 싶습니다.



답변

사용 :putrange():

:put =range(1,100)

상단의 빈 줄을 피하려면 ( kudos to romainl ) 다음을 사용하십시오 :0put.

:0put =range(1,100)


답변

실행 취소의 순수 Vim :put =range(1,100)(실제로 빈 줄이 남게 함) 외에도 OS에 따라 해당 명령 중 하나를 사용할 수 있습니다. 예를 들어, 유닉스 / 리눅스 박스에서 :

%!seq 1 100

위의 내용은 전체 (빈) 버퍼를 seq로 전달하여 입력을 무시하고 1에서 100까지의 숫자 만 출력합니다. Vim은 전체 버퍼를 seq의 출력으로 바꿉니다 .

원하는 것을 얻는 명령 줄 방법에 이미 익숙 할 때 유용합니다.


답변

기록을 위해, 그리고 가장 짧은 방법은 아니지만 (@Undo의 멋진 솔루션 참조) 키 입력 순서도 그렇게합니다.

i1EscqaYpCtrl+aq98@a

내가 당신을 위해 그것을 분해하자 :

  1. i1<Esc> -숫자 1을 입력 한 다음 명령 모드로 돌아갑니다.
  2. qa -레지스터 “a”에서 매크로 기록 시작
  3. Y -현재 줄을 복사
  4. p -현재 줄 붙여 넣기 (커서도 붙여 넣은 줄로 이동)
  5. <Ctrl>a -줄의 다음 숫자를 증가시켜 2로 만듭니다.
  6. q -매크로 기록 중지 ( “a”등록)
  7. 98@a -레지스터 “a”에서 매크로를 98 회 재생

답변

새로운 접근법이 필요한 다른 접근법이 있습니다 (7.4.800과 같은 것)

이것은 빈 버퍼와 레지스터 a의 ‘1’을 가정합니다. 먼저 버퍼에 100 1을 입력하십시오 "a100P.

그런 다음 라인 2에서 100까지 시각적으로 선택하십시오 :2EnterVG.

이제 gCtrl+를 누릅니다 A.

에서 도움말을 읽으십시오 :h v_g_CTRL-A


답변

나는이 질문이 실제로 오래되었다는 것을 알고 있지만 당신이 그것을 할 수있는 다른 방법이 있습니다. 이 시도:

99o<esc>:%s/^/\=line('.')<cr>

99o<esc>100 개의 빈 줄이 열립니다. 그런 다음 대체 명령을 실행합니다.

:%                  " On every line
  s/                " substitute
    ^/              " the start of the line. (This will always match no matter what)
      \=            " Evaluate:
        line('.')   " The current line.


답변