2009-06-23 5 views
114

명령을 몇 달 전에 발견했기 때문에 내 bash 히스토리는 이미 위 화살표가 눌려 졌을 때 자동 완성됩니다 :이미 bash 히스토리 완성을 바꾸어서 이미 라인에있는 것을 완료 할 수 있습니까?

Press

$ vim file.py 

큰 역사를 지을 때 많은 시간을 절약 할 수 있기 때문에 새 컴퓨터에이 기능을 설정하고 싶습니다. 문제는 내가 언급 한 곳을 기억하고 끝없는 bash 참조와 튜토리얼을 읽는 것이 불행히도 도움이되지 않는다는 것을 기억할 수 없다는 것이다.

누구나 명령을 알고 있습니까?

답변

193

아마

 
# ~/.inputrc 
"\e[A": history-search-backward 
"\e[B": history-search-forward 

또는 동등

 
# ~/.bashrc 
if [[ $- == *i* ]] 
then 
    bind '"\e[A": history-search-backward' 
    bind '"\e[B": history-search-forward' 
fi 

합니다 (경우 대화 형 모드에 대한 문 검사) 일반적으로 위, 아래가의 readline 기능 previous-history에 바인딩

와 같은 next-history입니다. 나는 위/아래의 정상 작동을 대체하는 대신에 이러한 기능에 PgUp/PgDn을 묶는 것을 선호합니다.

 
# ~/.inputrc 
"\e[5~": history-search-backward 
"\e[6~": history-search-forward 

당신이 ~/.inputrc을 수정하여 쉘을 다시 시작하거나 말할 Ctrl 키 + X , Ctrl 키 + R를 사용한 후에는 ~/.inputrc을 다시 읽게. 당신은 관련 문서를 찾고 있다면 그런데


는 :

배쉬 쉘 프롬프트와 역사에 대한 The GNU Readline Library 사용합니다.

+0

답변 해 주셔서 감사합니다. 이것은 친숙한 것으로 들리지만, 불행히도 나를 위해 작동하지 않습니다. 그것을 .inputrc에두면 아무 것도 변경되지 않고 .bashrc에두면 아무것도하지 못하게됩니다. 어떤 아이디어? – blokkie

+0

신경 쓰지 마십시오. 역사 - 완료 - * 존재하지 않습니다; history-search- * 함수 만 존재합니다. 감사! – blokkie

+0

아, 분명히 처음 두 예를 잘못 입력했는데 ... 마지막 하나는 맞았습니다. 나는 그것을 고쳐 줄 것이다. – ephemient

-3

bash 완성을 사용하도록 설정해야 할 수 있습니다.

확인

  • /etc/profile
  • /etc/bash.bashrc
  • ~/.bashrc

여부를 확인하려면 위의 파일 소스 /etc/bash_completion의. 즉 /etc/bash___completion 만약

 
. /etc/bash_completion 

당신이 그들 중 하나에 추가해야합니다 위의 파일 중 하나에 의해 공급되지 않습니다.

기계의 모든 bash 사용자가 bash 완성을 원한다면 /etc/bash_completion/etc/bash.bashrc에서 가져 오십시오.

누가 bash 완성을 원한다면 ~/.bashrc/etc/bash_completion 소스를 사용하십시오.

+2

탭 완성은 멋지지만 원래의 포스터가 묻고있는 이력 리콜과 같지 않습니다. – ephemient

1

ohmyzsh으로, 당신의 .zshrc이를 사용

bindkey '^[OA' history-search-backward 
bindkey '^[OB' history-search-forward 

source ~/.zshrc를 다시로드 또는 터미널을 다시 시작하십시오.

출처 : 다음과 https://superuser.com/a/418299/71680

+0

zsh에서 나를 위해 일한 것은 소스 링크에 주어진 옵션입니다 : bindkey '\ e [A'history-search-backward bindkey '\ e [B'history-search-forward] –

3

업데이트 .inputrc가 : set enable-keypad on이 알고있는 몇 가지 일 (suckless simple terminal) 사용자와 같은 ~/.inputrc

"\C-[OA": history-search-backward 
"\C-[[A": history-search-backward 

"\C-[OB": history-search-forward 
"\C-[[B": history-search-forward 
+2

그 키는 무엇입니까? – Chris

+0

이 키들이 구체적으로 무엇인지 모르겠지만이 대답은 x11에서 tmux 및 st 터미널을 사용하는 동안 위로 및 아래로 키가 내역 검색을 수행하지 않을 때이 기능을 수정했습니다. – razzintown

+0

@razzintown st의 경우'del 키가 제대로 작동하려면'set enable-keypad on'이 있어야합니다 ([faq] (http://git.suckless.org/st/tree/FAQ)). 키패드가 켜져 있으면 화살표 키는 \ C- [OA "와'"\ C- [OB "'(와'"\ C- [OC "'와 \ C- [OD"')입니다. 나는 이것을 명확히하기 위해 답을 달았다. – archemiro

0

경우 화살표 키를 키패드 모드에 있음 . 이 유용한 /usr/share/doc/bash/inputrc.arrows 우분투 배송 :

# This file controls the behaviour of line input editing for 
# programs that use the Gnu Readline library. 
# 
# Arrow keys in keypad mode 
# 
"\C-[OD"  backward-char 
"\C-[OC"  forward-char 
"\C-[OA"  previous-history 
"\C-[OB"  next-history 
# 
# Arrow keys in ANSI mode 
# 
"\C-[[D"  backward-char 
"\C-[[C"  forward-char 
"\C-[[A"  previous-history 
"\C-[[B"  next-history 
# 
# Arrow keys in 8 bit keypad mode 
# 
"\C-M-OD"  backward-char 
"\C-M-OC"  forward-char 
"\C-M-OA"  previous-history 
"\C-M-OB"  next-history 
# 
# Arrow keys in 8 bit ANSI mode 
# 
"\C-M-[D"  backward-char 
"\C-M-[C"  forward-char 
"\C-M-[A"  previous-history 
"\C-M-[B"  next-history 

그래서 난 당신이 모두 필요합니다 있는지 확실하지 않습니다, 그러나 그것은 당신의 ~/.inputrc에이 다치게하지 않을 수 있습니다 : 이것은에 있습니다

# Arrow keys in keypad mode 
"\C-[OA": history-search-backward 
"\C-[OB": history-search-forward 
"\C-[OC": forward-char 
"\C-[OD": backward-char 

# Arrow keys in ANSI mode 
"\C-[[A": history-search-backward 
"\C-[[B": history-search-forward 
"\C-[[C": forward-char 
"\C-[[D": backward-char 

동일한 주제 : My cursor keys do not workxterm: special keys