Emacs가 기본적으로 사용하는 것과 동일한 키보드 바인딩 (예 : C-space
for set-mark
, M-w
텍스트 복사 C-y
, M-y
붙여 넣기 등)을 사용하여 Bash의 명령 행에서 텍스트를 복사하여 붙여 넣을 수 있기를 원합니다 .
GNU 배쉬 문서는 배쉬는 기본적으로 설정이 키 바인딩의 일부와 함께 제공했다.
예를 들어 yanking ( C-y
)은 기본적으로 터미널에서 작동합니다. 그러나 set-mark
및 copy
명령을 작동시킬 수 없으며 기본적으로 어떤 키에도 바인딩되어 있지 않습니다.
일반적으로 사용자가 자신의 키 바인딩을 정의 할 수있는 방법은에 키 바인딩을 추가하는 것 .inputrc
입니다. 내가 보니 도움이 될 수 있습니다 내가 추정하는 설명서의 다음 bash는 기능을 발견 그래서 내가 내가 (즉, 원하는 행동처럼 이맥스 – 더 정의 set-mark
로 C-space
와 copy
함께 M-w
).
copy-region-as-kill ()
해당 영역의 텍스트를 강제 종료 버퍼에 복사하여 바로 잡아 당길 수 있습니다. 기본적으로이 명령은 바인드되지 않습니다.
과
set-mark (C-@)
마크를 포인트로 설정하십시오. 숫자 인수가 제공되면 마크가 해당 위치로 설정됩니다.
만약 내가 제대로 이해하고, 위의 방법 copy-region-as-kill
, 기본적으로 모든 키보드 순서에 바인딩되지는 반면 set-mark
에 바인딩 C-@
기본적으로.
C-@
터미널에서 시도했지만 set-mark
커서를 움직일 때 강조 표시된 텍스트가 보이지 않기 때문에 실행되지 않는 것 같습니다 . 어쨌든 키보드 바인딩 ( M-w
및 C-
)을 함수 copy-region-as-kill
및 그 set-mark
이상에 추가 .inputrc
한 다음로 다시로드 하려고 시도했지만 C-x C-r
작동하지 않았습니다. .inputrc
다른 사용자 정의 키 바인딩이 정의되어 있기 때문에 다른 항목이 작동 한다는 것을 알고 있습니다.
내가 잘못하고있는 것이 있습니까? 아무것도 빠졌습니까?
답변
선택을 강조 표시하지 않지만 그렇지 않으면 제대로 작동한다고 생각합니다.
달리기
$ bind -p | grep copy-region-as-kill
C-x C-r
실제로 작동 하는지 확인하십시오 .
다음과 같이 말해야합니다.
"\ew": copy-region-as-kill
그 후에는 잘 작동합니다.
예:
$ abc<C-Spc><C-a><M-w> def <C-y>
나에게 준다
$ abc def abc
만약 당신이 어디에 알고 싶다면 mark
, 그냥 할 C-x
C-x
.
예:
$ <C-Spc>abc<C-x><C-x>
커서를 마크를 설정 한 위치 (줄의 시작)로 되돌립니다.
또한 set-mark
바인딩 을 추가해야한다고 생각하지 않습니다 . 나는하지 않았다.
$ bind -p | grep set-mark
"\C-@": set-mark
"\e ": set-mark
# vi-set-mark (not bound)
(대부분의 터미널 은 눌 렸을 C-@
때 전송 됩니다 C-Spc
. 나는 당신도 그렇게 가정합니다.)
이 모든 것이 실패하면 :
- 하지 Ctrl+ Space에서 일을
emacs -nw
같은 터미널에? - bash에서 다른 Alt/ Meta단축키가 작동합니까?
답변
또한 kill-region에 대해 Cw를 바인딩 합니다. 여기 내 .inputrc :
# http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00033.html 참조 bind-tty-special-chars를 끄십시오 # 내가 좋아하는 Emacs 키 바인딩을 정의하십시오. "\ C- @": 설정 표시 "\ Cw": kill-region "\ Mw": 복사 영역 (kill-region-as-kill) "\ M- /"dabbrev-expand