내가 인생이 바뀌었다고 느낀 건 위쪽 화살표 키를 리맵핑한 순간이었음
이제는 모든 명령어를 순회하지 않고, 이미 입력한 문자로 시작하는 명령어만 탐색함
예를 들어 tar - 입력 후 위쪽 화살표를 누르면 이전에 사용한 tar 옵션이 바로 나옴
zsh에서는 다음처럼 설정함
bindkey "^[OA" up-line-or-beginning-search # Up
bindkey "^[OB" down-line-or-beginning-search # Down
CTRL+r을 쓰기 시작하면 위쪽 화살표를 다시는 안 쓰게 됨
완전한 게임 체인저라고 생각함. bash에서도 비슷하게 하려면 .inputrc에 다음을 추가함
zsh에서 글로벌 alias 자동 확장을 구현한 스니펫을 씀
예를 들어 alias -G G='rg -s'로 설정하면, command | G 입력 시 자동으로 command | rg -s로 확장됨
space 입력 시 자동으로 확장되며, \alias로 입력하면 확장을 건너뜀
.bashrc에 만든 “deep cd” 함수가 있음
인자로 받은 문자열을 포함하는 첫 번째 디렉터리로 자동 이동함
dcd() {
[ -z "$1" ] && return
local dir
dir=$(find . -type d -path "*$1*" -print -quit 2>/dev/null)
[ -n "$dir" ] && cd "$dir"
}
Hacker News 의견들
내가 인생이 바뀌었다고 느낀 건 위쪽 화살표 키를 리맵핑한 순간이었음
이제는 모든 명령어를 순회하지 않고, 이미 입력한 문자로 시작하는 명령어만 탐색함
예를 들어
tar -입력 후 위쪽 화살표를 누르면 이전에 사용한 tar 옵션이 바로 나옴zsh에서는 다음처럼 설정함
.inputrc에 다음을 추가함.inputrc에서도 동일하게 구현 가능함터미널에서 vim-mode를 켜면 훨씬 편안해짐
세 단어 전에서 실수했을 때?
3bcw면 끝임전체 삭제는
cc, 복잡한 수정은v로 (neo)vim에서 바로 열 수 있음이미 (neo)vim을 쓰고 있다면 새로운 단축키를 외울 필요가 없어서 최고임
ctrl-x+e로 neovim에서 열어 쓰는 게 좋은 절충안임set -o vi를 입력함어떤 사람이
\#라는 스크립트를 PATH에 넣어서 파이프라인 일부를 주석 처리할 수 있게 했다는 게 인상 깊었음~/bin/noglob파일에 이렇게 해서 bash에서 zsh 스크립트를 호출할 때 noglob 충돌을 피함mycmd1 #| mycmd2와 비교했을 때 어떤 장점이 있는지 궁금함$PATH에 추가할 예정임CTRL+W는 보통 이전 공백까지 삭제하므로
/var/log/nginx/전체를 지움Alt+Backspace는 비알파벳 문자 전까지 삭제함
단, 브라우저 탭을 닫는 단축키와 겹치니 주의해야 함
$WORDCHARS설정에서/를 제거하면 원하는 동작을 얻을 수 있음 (참고 링크)fzf shell integration으로 히스토리 검색을 업그레이드하길 추천함
시연 영상 / 공식 문서
자주 쓰는 트릭 하나 있음
긴 명령을 입력하다가 다른 걸 먼저 해야 할 때,
Ctrl-C로 취소하지 않고 주석 처리 후 실행해서 히스토리에 남김"push-line-or-edit"바인딩으로 가능하고, bash에서는C-u후C-y로 비슷하게 구현 가능함ctrl-u로 현재 줄을 저장하고 비운 뒤,ctrl-y로 다시 붙이는 것임. zsh에서는alt-q로 이 과정을 자동화할 수 있음alt-shift-3으로 현재 명령 앞에#을 붙이고 새 줄로 이동할 수 있음LLM풍 제목은 별로지만, 몇몇 팁은 유용해서 시도해볼 예정임
brace expansion이 탭 완성과 잘 안 맞는 게 아쉬움. 마지막 토큰 복제나 파일 확장자 삭제 같은 기능이 더 있었으면 좋겠음
zsh 설정에서 특정 명령을 히스토리에서 제외하는 함수를 씀
예를 들어
--force같은 위험한 명령이 히스토리에 남지 않게 함zsh에서 글로벌 alias 자동 확장을 구현한 스니펫을 씀
예를 들어
alias -G G='rg -s'로 설정하면,command | G입력 시 자동으로command | rg -s로 확장됨space 입력 시 자동으로 확장되며,
\alias로 입력하면 확장을 건너뜀.bashrc에 만든 “deep cd” 함수가 있음인자로 받은 문자열을 포함하는 첫 번째 디렉터리로 자동 이동함
처음엔 느릴 줄 알았는데 의외로 자주 쓰게 됨
jc나 z, fzf 같은 스마트 cd 도구도 함께 살펴보면 좋음