Programing

bash 탭 완성이 vim 탭 완성처럼 작동하고 일치하는 일치 항목을 순환하도록하려면 어떻게해야합니까?

lottogame 2020. 10. 30. 07:36
반응형

bash 탭 완성이 vim 탭 완성처럼 작동하고 일치하는 일치 항목을 순환하도록하려면 어떻게해야합니까?


나는 몇 년 동안 이것에 대한 해결책을 찾고 싶었습니다.

이런 이유로 bash보다 파일을 조작 할 때 vim에서 훨씬 더 생산적입니다.

만약 내가 가지고 있다면

file_12390983421
file_12391983421
file_12340983421
file_12390986421

bash에서 file_1-> tab을 입력하면 분명히 다음과 같이 나열됩니다.

file_12390983421 file_12391983421 file_12340983421 file_12390986421

그리고 이것은 작업하기에 끔찍한 지루하고 고통 스럽습니다.

vim의 동일한 시퀀스는 한 번에 하나씩 파일을 반복합니다.

누군가 bash에서이 작업을 수행하는 방법을 알려주십시오. 또는이를 수행 할 수있는 다른 쉘이 있으면 내일 전환 할 것입니다.


기본적으로 readline 명령에 TAB바인딩됩니다 complete. menu-complete대신 원하는 행동이 될 것입니다. 을 편집하여 readlines 설정을 변경할 수 있습니다 ~/.inputrc. 리 바인드하려면 TAB다음 행을 추가하십시오.

TAB: menu-complete

자세한 내용은의 READLINE섹션을 참조하십시오 man bash.


bash> = 4의 경우 다음 설정을 좋아할 수 있습니다.

# If there are multiple matches for completion, Tab should cycle through them

bind 'TAB':menu-complete

# Display a list of the matching files

bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press

bind "set menu-complete-display-prefix on"

이 설정은 Vim의 set wildmode=longest:full:list,full

Unix 및 Linux 사이트 의이 질문 에서 이러한 설정을 가져 왔습니다 .


위에

# cycle forward
Control-k: menu-complete
# cycle backward
Control-j: menu-complete-backward

추가를 고려할 수도 있습니다.

# display one column with matches
set completion-display-width 1

이렇게하면 현재 탭 기능을 유지하고 bash가 하나의 열에 가능성을 표시하도록 할 수 있습니다. 그래서 대신

file_12340983421 file_12390983421 file_12390986421 file_12391983421

당신은 얻을 것이다

file_12340983421
file_12390983421
file_12390986421
file_12391983421

추신 GNU Readline Library 웹 사이트 readline에서 최신 라이브러리를 얻을 수 있습니다 .


@sth 덕분에 나에게 가장 적합한 것을 찾았습니다.

정상적인 bash 탭 완성을 유지하고 필요할 때 ctl-f를 사용하여 menu-complete를 사용하여 순환합니다.

이것을 .inputrc 파일에 넣으십시오.

"\C-f": menu-complete

내 경험상 sth의 답변에 제공된 솔루션이 완전히 효과가 없었습니다. TL은, DR은 : 추가 set -o vi당신에게 ~/.bashrc.

When using menu-complete in conjunction with vi keybindings, I have to make sure that my ~/.bashrc has:

set -o vi

It's never been enough for my ~/.inputrc just to have:

TAB: menu-complete

set editing-mode vi
set keymap vi

My guess is that somehow set editing-mode and set keymap are clobbering the TAB: ... setting, but I haven't looked into the documentation thoroughly to figure out why this is the case.

참고URL : https://stackoverflow.com/questions/7179642/how-can-i-make-bash-tab-completion-behave-like-vim-tab-completion-and-cycle-thro

반응형