2012-07-14 3 views
3

다양한 GNU Readline 기반 CLI에서 작업하면 극단적으로 은 괄호와 따옴표가있는 방법이 있으면 속도가 올라가며 입력 할 때 이 자동으로 닫힙니다. Autoclose GNU Readline

따라서 배쉬 (또는 다른 경기 선행 지수)에 ' 또는 ( 실제로 닫는 따옴표 또는 브래킷 '' 또는 ()을 추가하고 쓰기 inbetween 커서 을 배치 할 입력.

나는 (예를 들어, ~/.inputrc 설정) 관련 아무것도 알아 내려고 꽤 많은 시간 동안 주위를 둘러 보았다했지만 아무것도 발견하지 않았고 그 모두 달성 있는지 궁금하다. 모든 의견을 주시면 감사하겠습니다.

답변

3

조금 까다 롭지 만 할 수 있습니다. 당신은 "일반"따옴표를 입력 제어-V와 각 키를 앞에 수

"(": "\C-v()\e[D" 
"\"": "\C-v\"\C-v\"\e[D" 

: .inputrc의 설정 (그래서 readline를 사용하는 모든 프로그램이 동작을 얻는다)로

bind '"(" "\C-v()\e[D"' 
bind '"\"" "\C-v\"\C-v\"\e[D"' 

하십시오 bash 명령으로 자동 닫기 동작을 트리거하지 않고 왼쪽 괄호를 사용합니다.

위의 내용은 Emacs 키 바인딩을 전제로합니다. VI 바인딩의 경우,

bind '"(": "\C-v()\ei"' 
bind '"\"" "\C-v\"\C-v\"\ei"' 

또는

기본적으로
"(": "\C-v()\ei" 
"\"": "\C-v\"\C-v\"\ei" 

이 바로 [Di로 대체 사용; 이스케이프 시퀀스를 보내 커서를 왼쪽으로 이동하는 대신 괄호/따옴표를 삽입 한 후 \e을 명령 모드로 다시 보내고 입력 모드를 다시 입력하면 방금 입력 한 문자 안에 커서가 위치하게됩니다.

+0

이것은 모두 좋지만,'edit-mode vi'를 설정하면 자동 완성 후에 나를 삽입 모드에서 빠져 나옵니다. 이것은 꽤 성가시다. 이 문제를 해결할 수 있습니까? – qed

0

원하는 것을 정확히하는 것은 불가능하지만 해결 방법이 있습니다. INPUTRC이 넣어 :

"\C-x\"": "\"\"C-b" 

실행 :

info readline "comm" "readline init" "sample" 

를 전체 샘플.

+0

불가능하지 않고 단지 뒤얽힌 것입니다. – chepner

관련 문제