1행의 문자와 2행의 문자를 수집합니다.

1행의 문자와 2행의 문자를 수집합니다.

두 줄이 있어요아래와 같이 편집기

3  àáâ
4  aaa

이 두 줄을 바탕으로 다음과 같은 결과를 얻고 싶습니다.

'à' => 'a',
'á' => 'a',
'â' => 'a',

어떤 아이디어가 있나요?

답변1

반복적인 작업을 수행해야 하는 경우 매크로를 기록할 수 있습니다.

예를 들어 여기에서는

qajxkphi'Escla' => 'Escla',Enter Escq

설명하다:

  • qa: 매크로 기록 시작a
  • jxkp: 한 줄 아래로 이동, 문자 지우기 및 복사, 위로 이동, 인쇄
  • hi'Esc: 왼쪽에 하나를 삽입 '하고 일반 모드로 돌아갑니다.
  • la' => ',Esc: 오른쪽으로 이동하여 현재 문자에 ​​추가 ' => '하고 일반 모드로 돌아갑니다.
  • la'EnterEsc : 오른쪽으로 추가 ',하고 줄 바꿈한 다음 일반 모드로 돌아갑니다.
  • q: 녹음 중지

매크로를 사용하고 작동하는지 확인하려면 첫 번째 문자 위에 자신을 놓고 을 누르십시오 @a. 결과 :

'à' => 'a',
áâ
aa

당신은 두 번째 줄에 있습니다. 2@a매크로를 실행하고 다음을 얻으려면 두 번 누르십시오 .

'à' => 'a',
'á' => 'a',
'â' => 'a',

답변2

다음 3번의 mapping을 파일에 넣은 ~/.exrc다음 vi|vim|gvim편집하려는 위치에 파일을 로드합니다. 변환하려는 라인의 아무 곳으로나 커서를 이동하고 Q나머지 작업을 수행하려면 모드 아래의 키를 누르기만 하면 됩니다. 참고: 문자 그대로의 의미는 아니지만 다음 키 조합을 누르면 파일에 삽입됩니다.ESCvirecursive macro^M<Ctrl><V> <Ctrl><M>

:map q :s/./&\r/^M
:map v :s/\(.\) \(.\)/'\1' => '\2',/^M
:map Q :/^^M-q+q-dd-P-Jv+Q

관련 정보