Обновление: Эта жалоба относится к старой версии fish. См. приведенный ниже комментарий одного из разработчиков fish, в котором описываются удивительные улучшения в поведении пейджера fish, которые аннулировали эту жалобу. >
Оболочка рыбы довольно крутая, однако я ненавижу одну из особенностей табуляции.
Я часто - почти как нервный тик - нажимаю {tab}{tab} при вводе пути при смене каталогов. Это позволяет мне использовать {tab} для проверки содержимого некоторого пути, одновременно решая ту часть проблемы устранения неоднозначности пути, которую позволяют решить мои текущие нажатия клавиш. Это дает отличный способ быстро найти самую быструю комбинацию клавиш, чтобы добраться до определенного места в файловой системе, не задумываясь и не обязательно заранее зная содержимое различных каталогов.
Fish, с другой стороны, интерпретирует {tab} {tab} таким образом, что я считаю невероятно раздражающим. На первой {tab} перечислены возможные завершения, это здорово. При нажатии следующей вкладки рыба выбирает первое завершение в списке и заменяет последнюю часть пути, введенного в данный момент в строке, полным первым завершением - независимо от статуса устранения неоднозначности. Последующие вкладки циклически перебирают следующие возможности. Это похоже на то, что делает командная оболочка Windows.
Это намного хуже, чем обычное поведение bash...
Рассмотрим глубоко вложенную структуру каталогов foo/bar/baz/a/b/c/
Где некоторые из foo, bar, baz — это пустые каталоги. Завершение табуляции в Bash позволяет мне набирать cd foo/{tab}{tab}{tab}{tab}{tab}{tab} -- не задумываясь о том, сколько раз я нажимаю табуляцию, не задумываясь об эффектах. перед тем, как нажать вкладку на текущее состояние моей записи в командной строке.
В обычном случае все эти каталоги не будут пустыми, но приведенное выше все еще работает, чтобы очень быстро обнаружить наименьшее количество символов, которые мне нужно ввести, чтобы перейти к какому-то глубоко вложенному пути.
С поведением bash: cd some/unknown/dir/{tab}{tab} гарантирует, что
(1) Содержимое каталога dir/ я вижу (2) так как многое из того, что можно однозначно выразить из моей команды, пока выполнено, но не более того.
После нажатия на две вкладки выше я могу увидеть следующее содержимое:
abc123 bar123 baz123 bcd123 mnop123
возможны следующие действия:
a{TAB}{TAB} (дает мне abc123 и, если это каталог, перечисляет его содержимое)
m{tab}{tab} (дает мне mnop123 и, если это каталог, перечисляет его содержимое)
Предположим, я хочу перейти к пути bcd123: b -- показывает мне, что я слишком быстро печатал, теперь показаны только 3 варианта. Я легко делаю вывод, что мне нужно только нажать «c», чтобы устранить неоднозначность до моей цели.
b{tab}{tab}c{tab}{tab} (получает нужный мне путь, перечисляет содержимое bcd123, если это каталог)
модель рыбы намного хуже. b{tab}{tab} завершился бы до bar123, и мне нужно нажать табуляцию неизвестное количество раз, чтобы получить желаемое значение, кроме того, у меня нет возможности вернуть контекст ввода только к тем буквам, которые я мы действительно печатали до этого момента (кроме того, что несколько раз нажимали клавишу Backspace). Что, если в этом каталоге окажется целая куча вещей, начинающихся с ba - я полностью облажался, вот что происходит...
В целом модель рыбы хуже:
- он не позволяет использовать вкладку для завершения вложенных путей - чтобы сделать это с рыбой, вам нужно '/' в нужное время в последовательности команд - что требует умственной обратной связи
- гораздо труднее обнаружить последовательности значений в больших каталогах
- в целом требует, чтобы вы «были осторожны», прежде чем нажимать вкладку, что заставляет вас нажимать ее реже и снижает ее полезность ...
Кто-нибудь, пожалуйста, скажите мне, что есть способ изменить поведение рыбы здесь, чтобы оно больше походило на bash ... рыба крутая, но такое поведение непригодно для использования - мне придется вернуться к bash, если нет способа изменить это ...