저는 주로 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
파일로 캡처할 수 있습니다.
매핑을 수행할 때 vim
두 vi
가지 모두 매핑된 단어를 구성하는 모든 키 입력을 수락하기 위해 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>