증분하면서 양키 및 붙여 넣기


14

Vim에서 .sql 파일을 편집하고 있습니다.

INSERT INTO apps_forms (app_id, form_id) VALUES
(1, 1),

내가하고자하는 것은 (1, 1),선을 잡아 당겨 137 번 붙여 넣는 것입니다. 그러나 매번 괄호 안의 두 번째 숫자가 증가하기를 원합니다 . 결과는 다음과 같습니다.

INSERT INTO apps_forms (app_id, form_id) VALUES
(1, 1),
(1, 2),
(1, 3),
...
(1, 137),

Vim에서 그렇게하는 방법이 있습니까? 그렇다면 어떤 명령을 사용해야합니까?

감사!

답변:


11

커서를 (1, 1),줄 에 놓고 다음을 입력하십시오.

qaVypt)<C-a>q135@a

설명 :

qa레지스터 a 내에서 매크로 기록을 시작합니다 (다른 문자를 선택할 수 있음).

Vyp 전체 행 (V)을 선택하고 복사 (y) 한 다음 아래에 붙여 넣어 (p) 현재 행을 복제합니다.

t) 다음 닫는 괄호 바로 앞의 커서를 이동하여 두 번째 숫자에 있도록하십시오.

<C-a>( Ctrla)는 숫자를 증가시킵니다.

q 매크로 기록을 종료합니다.

135@a레지스터에 저장된 매크로 재연 135 번.

편집 : Peter Rincker 는 더 짧은 명령을 가지고 있습니다.

qqYpW<c-a>q135@q

차이점은 다음과 같습니다.

이것은 레지스터 사용 Q를 (입력 속도 매크로를 저장하기 qq보다는 qa, 그 동일한 키 때문에)
하나의 키 입력을 복사 라인 Y(두 개가 아닌 Vy),
그것은 오직 하나의 키 입력을 상기 제 2 번호에 커서를 이동 W하는 대신 ( 의 t)).


4
Vim 골프 : qqyypW<c-a>q135@q. Y대신 사용하면 더 짧아집니다 yy.
Peter Rincker

10

최근 Vims는 시각적으로 선택된 영역을 증가시키고 시퀀스를 생성하는 방법을 배웠습니다. 따라서 줄을 137 번 붙여 넣은 후에이 작업을 수행 할 수 있습니다.

1) Ctrl-V라인 3에서 시작하여 두 번째 1을 시각적으로 블록 선택 ( )합니다.

2) 누릅니다 gCtrl-A

여기에 스크린 캐스트를 기록했습니다.

면책 조항 : Vim 7.4.900 정도가 필요합니다.


Vim 7.4.826의 데비안 / sid에서 성공적으로 테스트되었습니다.
Dubu

스크린 캐스트가 사라졌지 만이 방법은 굉장합니다! 감사.
david_nash 2014 년

2

사용 : 쉬운 쉽게 쉽게 그것을 할 다른 상황 방식에 적응하기 위해 / 기억 / 이해 VisIncr의 당신은 오히려 버전을 사용하려는 경우 처리에 반대 실제로 세기에서 패키지 관리자와 멋진을한다는 것을 (플러그인 vimball들 , GitHub 에서 얻을 수 있습니다 ). 그것으로:

  • (1, 1),줄에 가서 그것을 잡아 당기십시오 :Vy
  • 136 번 붙여 넣기 : 136p
  • 두 번째 열로 이동하여 1세로로 표시하십시오.C-vGf)h
  • 증분을 실행하십시오. :II
  • 설명서를 읽고 다른 상품에 대해 알아보십시오 :help visincr.

1

나는 ~을 가지고 놀 것이다 g^a.

시도하십시오 137i0^v137kg^a.


1
Vi와 Vim에 오신 것을 환영합니다 ! markdown을 사용하여 답변의 형식을 지정했습니다. 이것이 OP 질문에 어떻게 대답하는지 설명하기 위해 편집 하면 더 좋습니다 .
D. Ben Knoble
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.