쉘의 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행을 삭제하면 메시지가 삭제됩니다.