Próbowałem skonstruować metodę basha do automatycznego uzupełnienia argumentu pliku. więc kiedy piszesz vi not[tab][tab]
automatycznie uzupełnia się do notes.md, jeśli znajduje się w historii lub ścieżce, lub wyświetla listę plików, gdy nie. Nie mogłem dowiedzieć się, jak to zrobić za pomocą bash_autocomplete, ale udało mi się utworzyć następującą funkcję, która działa poprzez wykonanie x vi not[enter]
. Każdy wie, jak to przetłumaczyć na automatyczne uzupełnianie:
function x () {
# last arg is file to find
FILEARG=${@: -1}
read -a FILES <<< $(timeout -k 1s 1s \
find . -maxdepth 4 -name "*${FILEARG}*" -type f \
-printf "%A@ %p\n" | sort -nr | awk '{print $2}')
#A@ access time epoc timestamp
#C@ status change time
# use this to only take latest:
#FILES="${FILES[0]}"
if [ ${#FILES[@]} -gt 1 ]; then
select FILE in ${FILES[@]}; do
break
done
else
FILE="${FILES[0]}"
fi
echo $FILE
eval ${@:1:$#-1} $FILE
}