주어진 문자열을 점차적으로 대체


12

아래에 텍스트가 있다고 가정 해 봅시다.

AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)

이제는 다음 nn과 같이 숫자 로 바꾸고 싶습니다.

AC (0)
AC (1)
AC (2)
AC (3)
AC (4)
AC (5)
AC (6)
AC (7)
AC (8)
AC (9)
AC (10)

나는 M-x replace-regexp nn RET \# RET이것을 달성 하기 위해 사용 했다.

질문 :

  1. 에서 시작 1하지 않고 교체 번호를 시작하고 싶습니다 0. 또는 오히려 지정된 숫자 say로 시작하십시오 25. 위의 명령을 어떻게 수정해야합니까?
  2. 대체 방법 nn같은 자리 001, 002... 998, 999등 - 나는 앞에 0과 의미

이것은 당신이 요구하는 것이 아니지만, 이것을하는 또 다른 방법은 레지스터와 함께 매크로를 사용하는 것입니다.
캐터필러

답변:


12

일반적인 기술

교체 문자열에는 임의의 리스프 코드가 포함될 수 있습니다. 로부터 교체 - 정규 표현식에 대한 문서 :

대화 형 호출에서 대체 텍스트에는 '\'가 포함되고 대체 텍스트의 일부로 사용 된 Lisp 표현식이 포함될 수 있습니다. 해당 표현식 내에서 '\ &'는 전체 일치, '\ N'부분 일치, '# &'및 '#N'을 나타내는 문자열이며 'string-to-number'및 '# 'replace-count'의 경우 '0'부터 지금까지 교체 횟수가 발생했습니다.

이 기술은 여러 가지 방법으로 사용할 수 있습니다.

에서 출발 1

우리가하고 싶은 와트는에 사용했던 nn것보다 하나 더 바꾸는 것 replace-count입니다 \#.

#'replace-regexp인수로 전화 하십시오 \,(1+ \#):

C-M-% nn \,(1+ \#)함께 윈 대체 할 것이다 1첫째, 다음 2, 3

에서 시작 25

하나만 추가하는 것이 아니라 예를 들어 25로 수정하면됩니다.

C-M-% nn \,(+ 25 \#)

선행 제로

또는 format앞에 0을 추가하는 데 사용할 수 있습니다. 이 교체 할 nn000, 001, 002에 시작 위 등 당신은 다른 혀짤배기 코드를 결합 할 수 있습니다 001, 025또는 당신이 원하는대로.

C-M-% nn \,(format "$03d" \#)


5

을 사용할 수도 있습니다 cua-mode.

사각형 레기온 (모두 nn)을 선택한 다음을 선택 M-x cua-rectangle-mark-mode합니다.

다음 M-n으로 기본값을 그대로 사용하십시오.


나는 이것도 답으로 받아 들일 수 있기를 바란다
Prasanna
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.