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

Как сбросить переменную в Vim?

У меня есть плагин, который устанавливает глобальную переменную и проверяет ее каждый раз, когда плагин загружается, чтобы избежать многократной загрузки. Я хотел бы разрешить перезагрузку плагина (разрешить перезагрузку плагина) без изменения самого плагина. Плагин просто проверяет, существует ли его переменная (т.е. exists('g:var_name')) — есть ли способ сбросить указанную переменную, чтобы проверка exists() вернула false?

p.s. Я не хочу изменять сам плагин, потому что я использую патоген с подмодулями git, указывающими на репозиторий плагина.

vim
22.04.2011

Ответы:


1

Я нашел документацию Vim для vimscript, в которой есть раздел переменные:

Чтобы удалить переменную, используйте команду «:unlet». Пример:

:unlet s:count
22.04.2011

2

Вы должны уметь :unlet g:var_name.

Проблема в том, что если функции, определенные в плагине, не определены с помощью function!, вы получите много ошибок, когда плагин будет загружен во второй раз. Плагин также может выполнять первоначальную настройку, которая может быть нарушена при двойном запуске.

В общем, если автор плагина добавил загруженную ловушку, то, вероятно, это не просто так.

22.04.2011
  • Правда, делая это, я вступаю в опасные воды. В частности, я использую плагин Mark, который стирается всякий раз, когда я загрузить сеанс с помощью sessionman.vim. 22.04.2011
  • Вместо unlet g:loaded_mark вы могли бы let g:force_reload_mark = 1 из-за того, как устроен его тест. Похоже, что плагин написан с учетом повторного поиска, потому что любые изменения цветовой схемы убивают его плагин. Он заявляет об этом в ридми на странице сценария. 22.04.2011
  • Вот два дополнения: 1. Если вы определяете анонимную функцию (function dict.fname), то вместо использования function! вы должны просто очистить dict (например, let dict={}). 2. Если вы определяете нормальную функцию, то во избежание ошибок при ресурсоснабжении плагина вы можете использовать команду delfunction. Оба действия используются LoadCommand reload ... из vimpluginloader и call frawor#Reload(...) из frawor (необходимо, чтобы вы использовали эти фреймворки, чтобы иметь возможность перезагрузить свой плагин). 23.04.2011
  • К сожалению, я связался с неправильным скриптом Mark на vim.org — на самом деле я использую Знак Инго Карката, у которого нет g:force_reload_mark. 27.04.2011
  • Новые материалы

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

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

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

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

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

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

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