159 votes

Comment faire fonctionner la complétion d'onglet PowerShell comme Bash ?

Disons que j'ai les fichiers suivants dans mon répertoire courant :

buildBar.bat
buildFoo.bat
buildHouse.bat

Et je tape ce qui suit à mon invite de commande, ./bu et ensuite TAB .

  • Dans Bash, il est étendu à ./build

  • Dans PowerShell, il est étendu à ./buildBar.bat -- le premier élément de la liste.

  • Dans Cmd, le comportement est le même que dans PowerShell.

Je préfère le comportement de Bash - existe-t-il un moyen de faire en sorte que PowerShell se comporte comme Bash ?

5voto

mjsr Points 1781

Modifiez la fonction TabExpansion pour obtenir ce que vous voulez. N'oubliez pas que si vous appuyez à nouveau sur la touche Tab, la nouvelle suggestion sera modifiée à partir de l'endroit où vous avez appuyé sur la touche. Je préfère nettement le comportement actuel, je veux que la ligne soit écrite aussi vite que possible. Enfin, n'oubliez pas l'expansion des caractères génériques, par exemple : bu*h[Tab] se transforme automatiquement en buildHouse.bat.

4voto

Nilesh Gule Points 1027

Avec Powershell Core, nous pouvons définir la propriété PredictionSource pour PSReadLine comme suit Histoire pour obtenir une suggestion automatique. Consultez la vidéo YouTube pour plus de détails https://youtu.be/I0iIZe0dUNw

1voto

Anubioz Points 228

En fait, le comportement de bash est régi par /etc/inputrc qui varie fortement d'une distro à l'autre.

Voici donc comment faire pour que PowerShell se comporte plus comme un bash avec des valeurs par défaut saines (Gentoo, CentOS)

# Press tab key to get a list of possible completions (also on Ctrl+Space)

Set-PSReadlineKeyHandler -Chord Tab -Function PossibleCompletions

# Search history based on input on PageUp/PageDown

Set-PSReadlineKeyHandler -Key PageUp -Function  HistorySearchBackward
Set-PSReadlineKeyHandler -Key PageDown -Function HistorySearchForward

# If you feel cursor should be at the end of the line after pressing PageUp/PageDown (saving you an End press), you may add:

Set-PSReadLineOption -HistorySearchCursorMovesToEnd

# Set-PSReadLineOption -HistorySearchCursorMovesToEnd:$False to remove

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X