Emacs에서와 같이 Bash에서 복사 및 설정 표시?


16

Emacs가 기본적으로 사용하는 것과 동일한 키보드 바인딩 (예 : C-spacefor set-mark, M-w텍스트 복사 C-y, M-y붙여 넣기 등)을 사용하여 Bash의 명령 행에서 텍스트를 복사하여 붙여 넣을 수 있기를 원합니다 .

GNU 배쉬 문서는 배쉬는 기본적으로 설정이 키 바인딩의 일부와 함께 제공했다.

예를 들어 yanking ( C-y)은 기본적으로 터미널에서 작동합니다. 그러나 set-markcopy명령을 작동시킬 수 없으며 기본적으로 어떤 키에도 바인딩되어 있지 않습니다.

일반적으로 사용자가 자신의 키 바인딩을 정의 할 수있는 방법은에 키 바인딩을 추가하는 것 .inputrc입니다. 내가 보니 도움이 될 수 있습니다 내가 추정하는 설명서의 다음 bash는 기능을 발견 그래서 내가 내가 (즉, 원하는 행동처럼 이맥스 - 더 정의 set-markC-spacecopy함께 M-w).

copy-region-as-kill ()

해당 영역의 텍스트를 강제 종료 버퍼에 복사하여 바로 잡아 당길 수 있습니다. 기본적으로이 명령은 바인드되지 않습니다.

set-mark (C-@)

마크를 포인트로 설정하십시오. 숫자 인수가 제공되면 마크가 해당 위치로 설정됩니다.

만약 내가 제대로 이해하고, 위의 방법 copy-region-as-kill, 기본적으로 모든 키보드 순서에 바인딩되지는 반면 set-mark에 바인딩 C-@기본적으로.

C-@터미널에서 시도했지만 set-mark커서를 움직일 때 강조 표시된 텍스트가 보이지 않기 때문에 실행되지 않는 것 같습니다 . 어쨌든 키보드 바인딩 ( M-wC-)을 함수 copy-region-as-kill및 그 set-mark이상에 추가 .inputrc한 다음로 다시로드 하려고 시도했지만 C-x C-r작동하지 않았습니다. .inputrc다른 사용자 정의 키 바인딩이 정의되어 있기 때문에 다른 항목이 작동 한다는 것을 알고 있습니다.

내가 잘못하고있는 것이 있습니까? 아무것도 빠졌습니까?


어떤 버전의 bash터미널 프로그램을 사용하고 있습니까?
Mikel

나는 GNU bash는 버전 3.1.17 (1) -release (x86_64에-레드햇 리눅스 GNU) 그놈 터미널 (또한 터미네이터에)에 사용하고 있습니다
아멜리오 바스케스 - 레이나

답변:


11

선택을 강조 표시하지 않지만 그렇지 않으면 제대로 작동한다고 생각합니다.

달리기

$ 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단축키가 작동합니까?

1
감사! .inputrc에 "\ ew"대신 "Mw"가 있습니다. 강조 표시가 부족하여 나를 혼란스럽게했습니다. 그런데 bind 명령에 대한 포인터에 감사드립니다. 이제는 매력처럼 작동합니다!
Amelio Vazquez-Reina

2
어서 오십시오! 예, \e또는 을 작성해야합니다 \M-. readline init 파일 구문을 참조하십시오 .
Mikel

정말 좋은 답변입니다! 감사. 이것은 나에게 비슷한 문제를 해결했다 : D
ephsmith

자동으로 set-mark 및 copy-region-as-kill 작업을 수행 할 수 있습니다 (emacs에서와 같이).
mosh

4

또한 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.