쉘 vi 모드 인쇄(인수: 중복): 제거하는 방법은 무엇입니까?

쉘 vi 모드 인쇄(인수: 중복): 제거하는 방법은 무엇입니까?

쉘의 vi 명령 모드에서 숫자(예: 8)를 클릭할 때마다 "(arg: 8)"이 줄 시작 부분에 나타납니다. 이런 일이 발생하지 않도록 하는 방법을 아는 사람이 있나요? 내가 입력하고 있는 줄을 움직이면 주의가 산만해집니다.

바꾸다:

(arg: 8) somecmd --itslong --reallylong

이것:

somecmd --itslong --reallylong

답변1

명령 모드(실제 편집기 또는 Bash 모드)에 있을 때 vi숫자를 누르면 인수(따라서 "arg")가 입력되며, 일반적으로 다음 명령이 반복되는 횟수를 설정하는 데 사용됩니다. 이를 방지하려면 i숫자를 누르기 전에 입력 모드(예: 를 누르는 것)에 있어야 합니다.

데모:

vi 모드가 아닌 경우 다음 명령을 사용하여 들어갈 수 있습니다.

set -o vi

(emacs 모드로 들어가 vi 모드를 종료할 수 있습니다 set -o emacs:)

이제 vi 입력 모드에서 다음 명령을 입력하십시오.

echo abcdefghijk4

위와 같이 끝에 숫자 "4"가 표시됩니다.

지금 누르세요 Esc. 커서가 한 문자 왼쪽으로 이동하고 이제 명령 모드가 됩니다.

숫자를 누르고 "3"이라고 말합니다. 이제 다음을 볼 수 있습니다:

(arg: 3) echo abcdefghijk4

이제 대문자 X를 누르세요. 넌 봐야 해:

echo abcdefgh4

Readline(Bash의 명령줄 입력 편집기)에 문자 3개를 "삭제"하라고 지시했기 때문에 문자 3개("ijk")가 삭제되었습니다.

이제 i아무 번호나 누르세요. 숫자는 명령줄의 커서 위치에 삽입됩니다.

답변2

문제의 코드는 다음 위치에 있습니다.lib/readline/misc.c

109행과 241행을 삭제하면 메시지가 삭제됩니다.

관련 정보