저는 명령줄에서 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을 사용하여 이 작업을 수행하고 싶습니다. 파일 이름의 공백에 대한 설명은 위험을 알고 있다고 가정할 때 범위를 벗어납니다.