Nano Hash - криптовалюты, майнинг, программирование

Заставить Nerdtree использовать Choosewin в открытом файле

Одним из двух моих любимых плагинов для vim являются NERDTree и ChooseWin. Теперь мне нравится их комбинировать. На самом деле я хочу настроить NERDTree таким образом, чтобы при открытии файла (o) он использовал ChooseWin, чтобы запросить у пользователя окно для отображения (нового) буфера в По умолчанию NERDTree всегда использует последнее активное окно (кроме своего собственного).

Я уже просматривал документацию NERDTree (потому что, думаю, создать хук здесь — это решение), но ничего не нашел. Раздел API на первый взгляд кажется интересным, но мне он не помогает.

Так что я просто хочу спросить сообщество, достаточно ли кто-то халтурит, чтобы найти решение для этого.

23.02.2018

  • По крайней мере, попробуйте что-нибудь, прежде чем просить о помощи. 23.02.2018
  • @romainl Я знаю, что это распространенный шаблон. Но, как я уже сказал, я много читал, но ничего не смог найти. Итак, как мне попробовать что-то, если я понятия не имею, с чего начать? 23.02.2018

Ответы:


1

Вы, вероятно, захотите разветвить nerdtree для этого

как только вы это сделаете, вы измените эту функцию (nerdtree#ui_glue#invokeKeyMap)

вы бы проверили это a:key == 'o', тогда вам нужно будет выяснить, какой файл находится под курсором, чтобы вы знали, что делать после вызова ChooseWin. Я не думаю, что это очень простая задача, по моему опыту, разобраться в коде nerdTree не так уж и просто, но если вы готовы приложить усилия...

24.02.2018
  • Да, возможно, я сделал это. Думаю, я чему-то научусь из этого. 25.02.2018

  • 2

    Решение:

    Чтобы использовать подключаемый модуль choosewin при открытии файла с помощью NERDTree, необходимо настроить функцию activateFileNode(). Подход прост: сделайте резервную копию идентификатора текущего окна, вызовите функцию choosewin, чтобы выбрать окно, вернитесь к NERDTree по сохраненному идентификатору, а затем откройте файл как обычно. Поскольку NERDTree всегда использует последнее посещенное окно, это решение работает.
    Необходимо сохранить идентификатор окна и вернуться назад, запустите следующую процедуру с помощью NERDTree, чтобы открыть файл использует переменные, которые являются локальными для их буфера.

    Код

    В автозагрузке\nerdtree\ui_glue.vim:

    function! s:activateFileNode(node)
        let l:nerdwindow = win_getid()
        call choosewin#start(range(1, winnr('$')))
        call win_gotoid(l:nerdwindow) 
        call a:node.activate({'reuse': 'all', 'where': 'p'})
    endfunction
    


    Имейте в виду, что это работает, только если установлен choosewin. Пока у меня нет решения, как проверить это раньше. Возможно последует обновление.

    Это решение также доступно в моей ветви. Как только я исправлю это "проверить наличие плагина", я открою PR.

    02.03.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..