Emacs가 기본적으로 사용하는 것과 동일한 키보드 바인딩을 사용하여 Bash의 명령줄에서 텍스트를 복사하고 붙여넣을 수 있기를 바랍니다(예: 텍스트를 복사 하는 데 C-space
사용 , 텍스트를 붙여넣는 데 사용 등).set-mark
M-w
C-y
M-y
이것GNU 배쉬 문서Bash에는 몇 가지 기본 키 바인딩이 제공됩니다.
예를 들어 C-y
내 터미널에서는 기본적으로 잡아당기기( )를 사용합니다. 그러나 set-mark
및 명령이 작동하도록 할 수 없으며 copy
기본적으로 어떤 키에도 바인딩되지 않는 것 같습니다.
일반적으로 사용자가 자신의 키 바인딩을 정의하는 방법은 에 추가하는 것입니다 .inputrc
. 그래서 저는 문서를 살펴보고 제가 원했던 Emacs와 유사한 동작(예: set-mark
with C-space
및 copy
with M-w
)을 정의하는 데 도움이 될 수 있다고 생각한 다음 bash 함수를 찾았습니다.
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
내가 뭐 잘못 했어요? 내가 뭐 놓친 거 없니?
답변1
선택 항목을 강조하지는 않지만 그 외에는 꽤 잘 작동한다고 생각합니다.
달리기를 해보세요
$ 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
- 다른 Alt/ Meta단축키가 bash에서 작동합니까?
답변2
나도 Cw를 묶었어킬 존. 이것은 내 .inputrc입니다.
# See http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00033.html
set bind-tty-special-chars off
# Define my favorite Emacs key bindings.
"\C-@": set-mark
"\e ": set-mark
"\C-w": kill-region
"\ew": copy-region-as-kill
"\e/": dabbrev-expand