저는 Archlinux에서 터미널 에뮬레이터로 zsh + rxvt-unicode를 사용하고 있습니다. + 를 사용하여 Ctrl터미널에서 탐색을 성공적으로 설정했지만 Arrow keysShift + 화살표(또는 전체 단어를 선택하려면 Ctrl + Shift + 화살표)를 누를 때 터미널에서 텍스트를 선택할 수 없습니다. 며칠 동안 해결책을 검색했지만 찾을 수 없습니다. 활성화 keyboard-select
해도 .Xresources
아무런 효과가 없습니다. 그래서 제가 관심 있는 것은 모든 텍스트 편집기에서 할 수 있는 것처럼 마우스를 사용하지 않고 콘솔에서 텍스트를 선택하려면 어떻게 해야 합니까?
답변1
나는 세 단계를 거쳐 이 작업을 수행했습니다.
1단계. 메타키를 작동시키세요:
넣으세요 URxvt*altSendsEscape: true
. ~/.Xresources
그런 다음 xrdb ~/.Xresources
넣으세요 ~/.xinitrc
.
xterm의 경우 , ~/.Xresources
장소 에 xterm*metaSendsEscape: true
.
rxvt의 경우 내 직감으로는 동일하거나 매우 유사해 보인다고 말합니다.
2단계. 커서 움직임 수정
그러면 Emacs 메타키가 제공되므로 Esc 키를 누를 필요가 없습니다. Bash를 사용하는 동안 이것을 설정하고 작동시킨 다음 zsh로 전환했습니다. 그러나 zsh와 bash는 Emacs 키 바인딩을 사용한 단어 이동에 대해 약간 다른 것 같습니다. Emacs에서 얻은 가장 가까운 동작은 다음과 같습니다.수리하다. Emacs에 익숙하다면 쉘에서 동일한 커서 이동을 수행하는 것이 매우 편리합니다.
예를 들어, 이제 C-SPC로 표시를 설정하고, 이전에 입력한 단어를 Mb로 표시하고, Cw로 끝내고(또는 Mw로 삭제하지 않고), Cy로 꺼내는 등의 작업을 수행합니다.
좋아요, 당신이 Ctrl-Left 등을 원하는 건 알지만 그건거대한하향 거래: 이 경우에는 다음을 수행해야 합니다.도착각 커서 이동에 대해되돌아오다계속 입력하세요. 엄청난 성가심과 생산성 손실이 있습니다! "새로운"(그러나 더 나은) 단축키는 처음에는 뻣뻣하지만 누구나 억지로 단축키를 사용하도록 조언하고 싶습니다. 그러면 곧(계속 입력하면!) 자연스럽게 나올 것입니다.
3단계. X 클립보드에 복사하기 위해 다음을 설정했습니다( 에서 ~/.zshrc
).
# clipboard
X_CLIPBOARD='xclip -d ":0" -selection clipboard'
alias xi="$X_CLIPBOARD" # `-i` (or `-in`) is default
alias xo="$X_CLIPBOARD -o"
이제 출력을 파이프로 연결하여 xi
아무 곳에나 붙여넣을 수 있습니다(X가 아닌 tty에서도 X가 실행 중인 것처럼 작동함 -d
). 쉘 명령에서 사용하려면 backtick만 하면 됩니다 xo
.
xo
Emacs(tty에서 실행)에서 이를 사용하려면 위 별칭의 기능을 복제하는 스크립트를 만들어야 했습니다 .
#!/bin/zsh
xclip -d ":0" -o -selection clipboard
그런 다음 ~/.emacs
:
(defun pst ()
"Inserts the X clipboard (xclip -d ':0' -o -selection clipboard)
at point. `M-1' (the '(1)) to insert in the current buffer."
(interactive)
(shell-command "pst" '(1))
(end-of-line) )
그 이유는 Emacs를 zsh 별칭에 연결하는 방법을 찾을 수 없기 때문입니다. 비록 이것이 가능하다고 생각됩니다. 어쨌든 전화해 보세요 M-x pst
.
편집하다
forward-char
Emacs가 방금 삽입한 문자 수와 동일한 수의 문자를 갖도록 이 해결 방법을 추가했습니다 . (아래 코드의 첫 번째 부분은 스크립트입니다. 위를 참조하세요. 또한 변경되었습니다.) 저는 중간 파일을 사용하여 이 작업을 수행합니다. 비록 프로그래머로서 이것은 내 직관에 어긋나지만(나쁜 습관으로), 음, 이것은 다음과 같은 것 같습니다. 일하다. 분명히 end-of-line
(내 첫 번째 대답에서는) 문장 중간에 단어를 삽입하고 싶기 때문에 좋지 않습니다.
#!/bin/zsh
CLIP=`xclip -d ":0" -o -selection clipboard`
CLIP_LEN=`echo -n $CLIP | wc -c`
echo "(set-variable '*clip-len* $CLIP_LEN)" > ~/.clip_len
echo -n $CLIP
(setq *clip-len* 0)
(defun pst ()
"Inserts the X clipboard (xclip -d ':0' -o -selection clipboard)
at point. `M-1' (the '(1)) to insert in the current buffer."
(interactive)
(shell-command "pst" '(1))
(load-file "~/.clip_len")
(forward-char *clip-len*) )