programing tip

이미 행에있는 내용을 완료하기 위해 bash 기록 완료를 어떻게 변경합니까?

itbloger 2020. 7. 2. 08:00
반응형

이미 행에있는 내용을 완료하기 위해 bash 기록 완료를 어떻게 변경합니까?


두 달 전에 위쪽 화살표를 누를 때 이미 bash 기록을 자동으로 완성하는 명령을 찾았습니다.

$ vim fi

프레스

$ vim file.py

새 컴퓨터에서 이것을 설정하고 싶습니다. 큰 역사를 유지할 때 많은 시간을 절약하기 때문입니다. 문제는 내가 언급 한 곳을 기억하고 끝없는 bash 참조 및 자습서를 읽는 것이 불행히도 도움이되지 않았다는 것을 기억하지 못한다는 것입니다.

아무도 명령을 알고 있습니까?


아마 같은

# ~ / .inputrc
"\ e [A": 과거 검색 뒤로
"\ e [B": 검색 기록 전달

또는 동등하게

# ~ / .bashrc
[[$-== * i *]] 인 경우
그때
    ' "\ e [A"바인딩 : 기록 검색-뒤로'
    ' "\ e [B"바인딩 : 기록 검색 전달'
fi

(if 문은 대화식 모드를 확인합니다)

일반적으로 Up 및 Down은 Readline 기능 previous-historynext-history각각 바인딩됩니다 . Up / Down의 정상적인 작동을 대신하는 대신 PgUp / PgDn을 이러한 기능에 바인딩하는 것을 선호합니다.

# ~ / .inputrc
"\ e [5 ~": 과거 검색-뒤로
"\ e [6 ~": 검색 기록 전달

수정 한 후에 ~/.inputrc쉘을 다시 시작하거나 Ctrl+ X, Ctrl+ R사용 하여 다시 읽도록 지시하십시오 ~/.inputrc.


그건 그렇고, 관련 문서를 찾고 있다면 :

Bash는 쉘 프롬프트와 히스토리에 GNU Readline Library 를 사용합니다.


다음을 사용하여 .inputrc를 업데이트하십시오.

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

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

ohmyzsh를 사용하면 .zshrc 에서 이것을 사용하십시오 .

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

source ~/.zshrc터미널 을 다시로드 하거나 다시 시작합니다.

출처 : https://superuser.com/a/418299/71680


경우 set enable-keypad on에 당신의 ~/.inputrc일부 성 (로 suckless 간단한 터미널 ) 사용자가 화살표 키를 키패드 모드에 있음을 알고 있습니다. 우분투는 다음과 같이 유용합니다 /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

이 같은 주제에 또한 내 커서 키가 작동하지 않음 또한이 xterm 등 : 특수 키


bash 완성을 활성화해야 할 수도 있습니다.

검사

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

위의 파일 소스 중 하나가 있는지 확인하십시오 /etc/bash_completion.

. / etc / bash_completion

/etc/bash___completion위의 파일 중 하나에 의해 제공되지 않은 경우 해당 파일 중 하나에 추가해야합니다.

If you want all bash users on your machine to have bash completion, source /etc/bash_completion from /etc/bash.bashrc.

If it's just you who wants bash completion, source /etc/bash_completion from your ~/.bashrc.

참고URL : https://stackoverflow.com/questions/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line

반응형