Что: 77ede978e9c24bc8e68ee4e900b9dc5bf94b29f6 Когда: 2021-02-02 21:30:56+03:00 ------------------------------------------------------------------------ Темы: tip tmux zsh ------------------------------------------------------------------------ Быстрый выбор файла Наткнулся на Facebook PathPicker утилиту: https://github.com/facebook/pathpicker/ (fpp) Давно хотел что-то похожее, но сделал только жалкое подобие в виде qq: 5d2d9f386d547b8e436829db5c6533b17feffe8e. Утилита временами странно себя ведёт при выборе. Из коробки не работает с zsh, ибо shell скрипты для неё писал человек явно не сведущий в shell-е совсем. В целом штука понравилась: захотел выбрать несколько файлов -- вызвал через tmux её (https://github.com/tmux-plugins/tmux-fpp -- тоже кстати из коробки не работающий скрипт, бл@, ну bash не стоит на куче систем из коробки, с чего вы взяли!? да и не используют его опытные пользователи) интерактивно выбрал, а дальше либо в редактор, либо команду набирай. Но при выборе всего буфера, всего окна -- она ощутимо медленно работает. Мне приходится ждать пока она отпарсит окно. Да и ввод команды там не самый удобный. git add -- ещё терпимо. Но что-то сложнее уже хотелось бы в shell-е, а результат этой команды добавить к уже набранному тексту. Нашёл ещё ряд утилит которые интерактивно позволяют что-то выбирать: * https://github.com/mooz/percol -- не пробовал, ибо на Python, поэтому не хотелось бы (скорость) * https://github.com/peco/peco -- тоже самое, только на Go. Попробовал -- не работает. Точнее вывод в окне показывает, так сказать, первый кадр, но вообще не реагирует ни на какие нажатия -- делаю kill. * https://github.com/mptre/pick -- очень минималистичная утилита на Си. Работает. Но выбирает только один элемент. Для выбора нескольких файлов для git add (например) не подойдёт * https://github.com/junegunn/fzf -- fzf вообще известнейшая штука, но как-то у меня не срастается с ней дружелюбие. Да и несколько элементов не выбрать * https://github.com/robbiev/numberwang -- среди вывода просто ищет всё что похоже на файлы и даёт номерами выбрать интересующие, копируя результат в буфер обмена. Никакого красивого интерактива, очень всё примитивно, но... вообще выглядело именно как то что мне надо. Однако... на большом выводе (буфер tmux) он жутко тормозит! Да и когда файлов много, то хотелось бы поплотнее умещать в несколько столбцов, чтобы не прокручивать экран * https://github.com/edi9999/path-extractor -- штука которая занимается только выборкой файлов из ввода. Самое главное: поддерживает "файл:строка" формат. В отличии от numberwang-а, работает очень быстро. Остаётся только заиметь для неё TUI какой-нибудь Но мне же по сути достаточен выхлоп numberwang, только бы в колонки в его. Помню что print команда из zsh, который у меня и так стоит, умеет делать в несколько колонок. Поэтому я взял и написал на zsh (один из первых опытов программирования именно на нём) отображение и спрашивание вариантов выбора: http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=62bccf2a97581ed475dd46068621d0dffa21d5c9 Ну и синтегрировал с tmux-ом. Теперь могу где угодно нажать P-o, отобразиться выбор "файлов", ввожу их номера, enter, и на 20 секунд оно будет в буфере обмена (если программа полностью закроется, то и у буфера обмена не будет источника), и я могу вставить в командную строку или ещё куда результат. Для git команд это точно будет полезно. А вот выбирать одиночный файл пока выходит не супер быстро, ибо сырое представление файлов отличается от разукрашенного и структурированного и не сразу находишь нужный файл, чтобы ввести его номер. Возможно нужно сделать отдельный popup с выбором единичного файла на основе pick утилиты. А вообще разукрашенный вывод fpp, который внешне полностью похож на входные данные -- действительно помогает для восприятия (только плохо и медленно работает). Может всё же напишу на Go fpp аналог, тем более что самая сложная часть по выпарсиванию имён файлов уже есть готовая. ------------------------------------------------------------------------ оставить комментарий: mailto:comment@blog.stargrave.org?subject=Re:%20%D0%91%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9%20%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%2877ede978e9c24bc8e68ee4e900b9dc5bf94b29f6%29 ------------------------------------------------------------------------ Сгенерирован: SGBlog 0.34.0