1. 매크로 등록

1. 매크로 등록

저는 주로 VIM을 사용하지만 VI에서 파일을 조작해야 합니다. Solaris 2.5의 vi에 명령을 재사용한 기록이 있는지 기억합니까? 때로는 완전한 줄을 다시 입력하는 것이 고통스럽습니다. VIM에서는 ESC, ESC, 위쪽 화살표를 누를 수 있습니다.

답변1

아니요, 안타깝게도 SVR4 버전에는 기록 지원이 없습니다 vi.

vi버전 4가 아니라 "버전 SVR4.0, Solaris 2.5.0"이라는 점에 유의하세요 . 버전 문자열은 하드코드되어 있으며 최근 릴리스에서도 보고됩니다(Solaris 2.5는 약 18년 전 버전입니다).

Solaris 11부터 vim운영 체제와 함께 번들로 제공됩니다.

답변2

이것이 귀하의 필요에 충분하다면 키 입력을 vi매크로로 재생할 수 있습니다. 이는 두 가지 방법으로 수행할 수 있습니다.

두 경우 모두 유사점을 다루는 것부터 시작하여 vim차별화하겠습니다 vi.

1. 매크로 등록

이는 대화형으로 캡처되고 재생됩니다.

1.1 vim

에서는 vim기록 모드(명령 모드에서 도착)에 있는 동안 일련의 키 입력을 레지스터에 기록하여 매크로가 생성된다는 점을 기억하세요. 그런 다음 레지스터의 내용을 실행하여 매크로가 실행됩니다.

qa                # 1. Enter recording mode, will save to register "a.
  ihello<esc>     #    Type key strokes to insert string "hello".
             q    #    Return to command mode.

@a                # 2. Execute contents of register "a (insert "hello").

@@                # 3. Repeat last macro execution (insert "hello").

질문에서 묻는 것처럼 이러한 단계는 에서 사용되지 않고 vim대신 애플리케이션의 명령 기록을 사용합니다.

1.2 6

에서는 vi위의 1단계가 다르게 수행됩니다. 매크로 내용은 삽입 모드에서 버퍼에 입력된 다음 레지스터로 풀/복사/대기되어야 합니다.

i                            # 1a. Enter insert mode.
 ihello<ctrl-v><esc>         #     Type key strokes to insert string "hello", escaping necessary keys.
                    <esc>    #     Return to command mode.

"aY                          # 1b. Yank entire line to register "a (macro text should appear on a line by itself).

@a                           # 2. Execute contents of register "a (insert "hello").

@@                           # 3. Repeat last macro execution (insert "hello").

2. 버튼 매핑

이는 대화형으로 캡처하거나 적절한 *rc파일로 캡처할 수 있습니다.

매핑을 수행할 때 vimvi가지 모두 매핑된 단어를 구성하는 모든 키 입력을 수락하기 위해 1초(기본값)를 기다립니다.

2.1 vim

:cmap lhs rhs<enter>    # Map rhs-words to lhs-word for command-mode mappings.
:imap lhs rhs<enter>    #                           for insert-mode mappings.
:map! lhs rhs<enter>    #                           for command- and insert-mode mappings.
:map  lhs rhs<enter>    #                           for normal-mode mappings.
:nmap lhs rhs<enter>    #                           for strict normal-mode mappings.
                        # Escape necessary keys in lhs and rhs.
                        # lhs "#n" means function key "n"
                        # Use vim's extensive symbolic key names.

:vmap                   # Other variants
:xmap
:smap
:omap
:lmap

:unmap lhs              # Remove map
:nunmap                 # Other variants
:vunmap
:xunmap
:sunmap
:ounmap
:unmap!
:iunmap
:lunmap
:cunmap

2.1.1 예

q키를 쓰고 편집기를 종료 하려면 기호 키 이름을 사용하십시오 .vim

:nmap q :wq<CR><enter>     # <CR> is typed as 4 chars, <enter> as 1.

2.2 6개

:map  lhs rhs<enter>    # Map rhs-words to lhs-word for command-mode mappings.
:map! lhs rhs<enter>    #                           for insert-mode mappings.
                        # Escape necessary keys in lhs and rhs.
                        # lhs "#n" means function key "n"

:unmap lhs              # Remove map

2.2.1 예

키를 작성 q하고 편집기를 종료합니다.

:map q :wq<ctrl-v><enter><enter>

인용하다

  1. 문서 vim예:여기.
  2. Vi를 사용하여 편집 소개 표시vi, 다음 과 같은 저자가 작성 :이 PDF.

관련 정보