vim을 사용하여 현재 명령줄 명령을 바꾸는 방법은 무엇입니까?

vim을 사용하여 현재 명령줄 명령을 바꾸는 방법은 무엇입니까?

저는 명령줄에서 vim을 사용합니다. 현재 CLI에서 사용하고 있는 명령줄의 문자를 검색하고 바꾸려면 바꾸기 명령을 사용하고 싶습니다.

이것은 단지 예일 뿐이며, 파일 이름을 바꾸고 다음과 같은 명령을 작성한다고 가정해 보겠습니다.

mv here_is_a_way_too_long_filename.txt here_is_a_way_too_long_filename.txt

파일 이름이 꽤 길기 때문에 편의상 탭 완성을 사용하여 두 번째 파일 이름을 생성했습니다. 이제 밑줄을 다른 것으로 바꾸고 싶습니다 \. 예를 들어 .

저는 CLI에서 vim을 사용하고 있기 때문에 ESC일반 모드에서 Enter(vim)를 누르고 두 번째 파일 이름의 시작 부분으로 이동하여 :Enter Command를 누릅니다 s/_/\ /. 참고로 :여기에 들어왔을 때 다음을 보았습니다.

mv here_is_a_way_too_long_filename.txt here_is_a_way_too_long_filename.txt
execute: s/_/xxx/

하지만공백을 입력할 수 없습니다.또는이 vim 교체 명령을 실행하려면 Enter를 누르세요. 사실 execute:이 추가 줄에서만 종료를 누를 수 있습니다 ^C.

또한 교체 명령의 여러 변형을 시도했지만 소용이 없었습니다.

s/_/xxx/
gs/_/xxx/
%s/_/\\ /  ← NB: I can’t actually enter the space here.
s/_/\\s/
s/_/[:space:]/
... and so on

나는 명령 기록에 의지하고 싶지 않습니다.이 게시물명령 기록에서 이전 명령에 대해 유사한 작업을 수행하는 방법을 설명합니다.

위의 예에서 내가 얻고 싶은 결과는 다음과 같습니다.

mv here_is_a_way_too_long_filename.txt here\ is\ a\ way\ too\ long\ filename.txt

그런 다음 Enter 키를 눌러 mv셸에서 명령을 실행합니다(예 zsh: ).

가능하다면 CLI에서 vim을 사용하여 이 작업을 수행하고 싶습니다. 파일 이름의 공백에 대한 설명은 위험을 알고 있다고 가정할 때 범위를 벗어납니다.

관련 정보