ZSH에 붙여넣은 텍스트에서 후행 줄 바꿈 자르기

ZSH에 붙여넣은 텍스트에서 후행 줄 바꿈 자르기

나는 기록에 줄바꿈을 추가하는 것을 좋아하지 않기 때문에 입력하기 전에 백스페이스 키를 눌러야 하는 경우가 많습니다. 이 작업을 자동으로 수행하는 방법이 있는지 궁금합니다(후행 줄 바꿈 제거).

또한 때로는 붙여넣은 명령을 제출하기 전에 편집해야 하기 때문에 대괄호 붙여넣기를 비활성화하고 싶지 않습니다.

복사:

아래 코드 블록을 세 번 클릭하면 후행 줄 바꿈을 포함하여 전체 줄이 선택됩니다.

cd /tmp

이것을 복사하여 ZSH에 붙여 넣으십시오. 대괄호 붙여 넣기를 비활성화하지 않으면 실행되지 않습니다. 지금 기록 파일 보기

cat $HISTFILE | tail -3

다음과 같은 내용이 표시됩니다.

: 1646582294:0;cd /tmp\

: 1646582296:0;cat $HISTFILE | tail -3

UP 키를 누르면 줄 바꿈이 유지되는 것을 볼 수 있습니다.

내 zshrc 파일을 찾을 수 있습니다여기. 제가 놓친 것이 있다면 죄송합니다.

답변1

bracketed-paste붙여넣은 텍스트(있는 경우)에서 후행 줄 바꿈을 제거하도록 언제든지 zle 위젯을 재정의할 수 있습니다 .

bracketed-paste() {
  zle .$WIDGET && LBUFFER=${LBUFFER%$'\n'}
}
zle -N bracketed-paste

답변2

저는 zsh 사용자는 아니지만 이것을 .zshrc에 넣어보세요.

zshaddhistory() {
   setopt LOCAL_OPTIONS
   setopt EXTENDED_GLOB
   print -sr -- "${1%%$'\n'##}"
   fc -p "$HISTFILE"
   return 1
}

이렇게 하면 후행 줄 바꿈이 모두 제거됩니다. 원하는 것을 달성하기 위해 필요한 경우 수정하십시오. 비결은zshaddhistory훅.

관련 정보