все вопросы по Anki задавайте на форуме  reddit.com/r/AnkiRu/ 

• Моя сборка ' Must Have 2.0

Если кому-то интересно почитать как это всё начиналось,
то смотрите прежние описания моих дополнений и первоисточников вдохновения.

На этой странице подробно описаны составные части

(так называемые компартменты, импортируемые модули)
моего дополнения Must Have,

  • собравшего в себя более полсотни других дополнений
    с некоторой доработкой большинства из них,

  • а также содержащего возможности,
    которые никогда не существовали в виде отдельных плагинов.

Основная идея

возникла после поста на руборде

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

Но захотелось проверить на деле:

а каковы предпочтения у пользователей Anki?
Вдруг им действительно нужна мелочь пузатая? ;-)

Год назад создал пару десятков мелких дополнений, и вот уже накопилась кое-какая статистика, так что теперь уверенно могу сказать: заметно больше пользователей предпочитают скачать одно большое дополнение, чем ковыряться, выбирая из доброй сотни: вот это мне надо, а вот это скорее всего не пригодится, так что лучше не буду ставить, как бы чего не вышло.
Да пусть устанавливаются все — пока есть не просят :о)

Не говоря уже о том, что общее количество скачавших предельно мало́.

Однако сам процесс установки дополнений,

особенно если хочется поставить их более одного-двух — ужасно утомительный.

Надо мышкой выцепить меню

ИнструментыДополненияОбзор и установка…​

и в открывшемся диалоговом окне кликнуть по кнопке
(это ж ещё догадаться надо — весьма нестандартное решение).

Затем в списке найти нужное дополнение, открыть его описание, промотать вниз до плашки с идентификатором аддона, скопировать число в буфер, вернуться в Anki и вставить полученный номер из буфера в поле всплывающего диалогового окна, нажать клавишу Enter или кликнуть по кнопке OK, дождаться окончания загрузки и ещё раз кликнуть OK.

И снова да ладом. И так 50 раз. Больше Anki зараз не позволяет — получите бан на 24 часа.

И таки да, если в этот день вы скачивали и колоды, то вычтите их количество из сего общего суточного лимита на закачки с AnkiWeb.

Учитывая, что всех дополнений уже около 400, то на всё-про-всё вам потребуется неделя без выходных минимум (принимая во внимание, что не все дополнения достойны усилий по их установке).

 

Да будь я и нердом преклонных годов,
И то — без унынья и лени…​

Сами понимаете, задача для нормального человека просто невыполнимая. Надо быть ужасным занудой, чтобы совершить такое. Натуральным гиком. бОтаном. задротом. Ты как хочешь это назови…​

Да даже если надо найти всего одно дополнение, но именно то самое — задача тоже весьма непростая. Искать-то приходится по заголовку, в котором всего 74 символа. Поиск по описаниям дополнений отсутствует в природе как явление.

Либо открывай каждое мало-мальски намекающее на нужное дополнение и втыкай в описание, которое каждый автор тоже составил на свой вкус и цвет…​

' MustHave

В этом разделе описаны дополнения (компартменты):

  • ✓ × Limit Browser Search Modifiers

  • ✓ × Card Info During Review

  • ✓ × Clear all Editor Fields

  • ✓ × Deck name in title

  • ✓ • Deleting Reduant Configurations (Redundant)

  • ✓ • Removes Empty Note Types

  • ✓ × Expand and Collapse Decks

  • ✓ × Field Modifier: Random Item

  • ✓ × Hint Next and Hint All

  • ✓ × Hint-peeking Keyboard Bindings

  • ✓ • Insensitive case type field

  • ✓ • Multiple type fields on card

  • ✓ • Select_Buttons_Automatically

  • ✓ × Maximum images height in card editor

  • ✓ × Power Create Lists

  • ✓ × Rebuild All

  • ✓ • Refocus Card when Reviewing

  • ✓ × Search cards based on review time

  • ✓ × Search from Editor

  • ✓ × Search Google Images for selected words

  • ✓ × Small add cards dialog

  • ✓ × Strikethrough button in editor window

  • ✓ • Toggle Full Screen

  • ✓ • Toggle Full Screen and Hide Menu Bar

 

IMS

  • ✓ • Insensitive case type field

  • ✓ • Multiple type fields on card

  • ✓ • Select_Buttons_Automatically

Insensitive case type field

Тут всё достаточно просто.

В меню View Вид появляется команда

type: compare exactly

type: точное сравнение при проверке

Если она отмечена (на ней поставлена галочка), то
сравнение результатов вашего набора с клавиатуры
с содержимым поля выполняется

  • без учёта концевых (начальных и конечных/хвостовых) пробелов,

  • а также без учёта регистра букв.

Так что если вы часто испытываете проблемы
с нажиманием клавиши Shift на клавиатуре,
или бьёте пробел после каждого слова
(даже если за ним требуется знак препинания),
то теперь по этому поводу можно не париться.

Результаты сравнения могут быть представлены как в нижнем,
так и в верхнем регистре — это настраивается.

Знак ударения (как и всяческие умлауты), если вдруг оказался в поле,
будет из сравнения исключён — можете свободно копипастить слова из википедии :-)

 

Позволяет сделать проверку корректности ввода по {{type:…​}} независимой от регистра букв.

Перед проверкой заменяет неразрывные   пробелы на обычные и удаляет из введённой строки концевые пробелы. Различные диакритические знаки тоже удаляет, кстати говоря. Если в исходнике снимите комментарий со строки и выровняете колонку у строки EXACT_COMPARING = True то этих замен не будет, выполняется точное сравнение (настолько точное, насколько это удаётся самой Anki), но, кнопка по умолчанию таки переназначается при неправильном наборе.

Что немаловажно: устанавливает кнопку оценки ответа "Не помню" по умолчанию (то есть именно она сработает при нажатии на пробел или Enter) в случае, если обнаружены ошибки набора!

Если в исходнике раскроете комментарий (и выровняете колонку) у строки UPPER_CASE = True то результаты проверки на оборотной стороне будут показываться ЗАГЛАВНЫМИ буквами.

Вполне себе работает вместе с Multiple type fields on card

 

Multiple type fields on card

Тут всё совсем просто.

Теперь полей {{type:…​}} на карточке может быть несколько.

 

Select_Buttons_Automatically

Тут всё проще некуда.

Если напечатали с ошибками,

то кнопкой оценки по умолчанию будет Не помню Снова Again,

а если без ошибок,

то как обычно, В самый раз Хорошо Good.

 

Limit Browser Search Modifiers

В правом верхнем углу Обзора

в продолжение строки поиска появляются две галочки, Колода и Карточка

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

Важно!
С галочкой Карточка осторожно:
если в ваших пропусках отсутствует {{c1::…​}}
(скажем, они стартуют с двойки),
то такая запись не будет показана в результатах поиска!

 

Card Info During Review

Улучшает внешний вид данных, показываемых по карточке в окне Информация в Обзоре.

Вместо полужирных названий строк визуально выделены значения, ведь именно эту информацию смотрит пользователь, а название строки является лишь ненавязчивым напоминанием о характере и значении этой информации.

Строки подсвечены "зеброй", чтобы легче было понять, что есть что, когда происходит заворот строки на длинных значениях (например, названиях колод).

Наконец, по F3 при просмотре карточки можно напрямую открыть то же самое окно информации, что и в Обзоре.

Только в этом окне ещё будет показываться инфорация и о предыдущей карточке. Это очень удобно, когда вы только что ответили на карточку и хотите детально разобраться, какие ей назначены показатели: лёгкость, интервал и следующая дата.

Виджет со всей этой информацией по обеим карточкам будет показан справа при просмотре карточки по более очевидной (как мне кажется) комбинации клавиш Ctrl+Alt+Shift+F3

 

Clear all Editor Fields

Всё просто. В редакторе появляется кнопочка C и к ней горячие клавиши Alt+D для того, чтобы в одно движение рук очистить ВСЕ поля.

Удобно при добавлении новых записей, когда достаточно большое количество полей запоминают последнее введённое значение, а с очередной записи эти значения в значительной степени поменялись.

Конечно, можно просто закрыть окно добавления записей и открыть его вновь,
но это два телодвижения, а тут — одно.
Экономия, понимаешь!

 

Delete Redundant Options and Note Types

  • ✓ • Deleting Reduant Configurations

  • ✓ • Removes Empty Note Types

Deleting Reduant Configurations

Идея проста:

если вы много ставите чужих колод с расписанием (именно экспортированных, не с AnkiWeb, с сайта вы получаете колоды без расписания, там все карточки изначально новые и с настройками по умолчанию), а затем пробуете учить и удаляете их, то со временем у вас может накопиться достаточно большой список групп настроек, в котором значительное количество групп просто не используется, что начинает становиться быть очень обременительным и весьма неудобным в работе.

Либо периодически чистить этот список вручную,
либо довериться дополнению.

Во втором случае вы должны быть уверены,

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

Осторожно!
Внимание!
Перед выполнением данной чистки обязательно создайте полный экспортный вариант вашей коллекции, со всеми колодами, медиа-файлами и расписаниями.

Отдельная команда меню удаляет без лишних вопросов. Но после неё можно выполнить Undo Отмену

В составе групповой команды сначала будет показано уведомление, что столько-то типов записей и столько-то групп настроек будет удалено — в этот момент ещё можно избежать удаления, просто кликнув по кнопочке Нет или просто закрыть окно по красному крестику.

 

Removes Empty Note Types

Идея проста:

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

Либо периодически чистить этот список вручную,
либо довериться дополнению.

Во втором случае случае вы должны быть уверены,

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

Исходник доработан:

выполняется проверка, что хотя бы один тип записей должен оставаться обязательно, даже если он пустой.

А такое вполне реально может сложиться, если вы пытаетесь
- стереть все свои неудачи в заучивании
- и начать жизнь с чистого листа.

Правда, в этом случае логичнее было бы

экспортировать (без расписания, но с медиа-файлами) всё,
что вам ещё понадобиться в вашей будущей жизни,
и просто удалить профиль да создать его заново
да реимпортировать сохранёнки.

Но у людей иногда такая причудливая логика…​

что вот случаем слушаешь и потихоньку начинаешь понимать:
«Да-а-а, ему только так, действительно, иначе не получится, будет только хуже».
Такого учить — только портить.

Осторожно!
Внимание!
Перед выполнением данной чистки обязательно создайте полный экспортный вариант вашей коллекции, со всеми колодами, медиа-файлами и расписаниями.

Отдельная команда меню удаляет без лишних вопросов. Однако после неё можно выполнить Undo Отмену

В составе групповой команды сначала будет показано

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

 

Всё поудалять и проверить

Великолепная пятёрка и вратарь

Кому-то может показаться удобным

последовательное объединение всех этих команд в одну:

  1. удаление неиспользуемых типов записей

  2. удаление неиспользуемых групп настроек

  3. тестирование базы данных
    с одновременной её оптимизацией
    и удалением неиспользуемых меток

  4. поиск неиспользуемых медиа-файлов
    и возможное их удаление
    после подтверждения пользователя

  5. удаление пустых карточек

Чистота — залог здоровья!
Порядок прежде всего!
— Сказка о белой льдинке (1974)
Так, каждый день с утра.

Чисто для профилактики.

Не просто чисто — безупречно чисто.

 

Deck name in title

Суть в том, чтобы в заголовке окна показывалась дополнительная информация. Или наоборот, не показывалась:

имя профиля

Anki показывает его всегда. Зачем? Если у человека в базе единственный профиль, то с большой степенью вероятности он о его существовании даже не подозревает. Так что если профиль создан только один, то его название в заголовке не показываем.

имя программы

Иногда может оказаться полезным для тех, кто сам собирает варианты exe-файлов, или переименовывает зачем-то имеющиеся. Экзотика, конечно, но тем не менее.

параметры командной строки

Если у вас несколько баз, а в каждой базе по два-три профиля, если не больше, а на каждый профиль вы можете запускаться с различными языками оболочки, то информация о том, с каким именно сочетанием всех этих параметров вы имеете дело в данный момент, может оказаться очень и очень существенной.

название колоды

Если у вас разветвлённое дерево колод в коллекции(профиле), то без этого никуда.

название типа записи

 

имя (и номер) шаблона карточки

 

 

Expand and Collapse Decks

Чрезвычайно просто и столь же мега удобно.

На странице со списком колод:

По Ctrl+Shift++ развернуть все ветви колод.
(плюс — показывать больше информации)

По Ctrl+Shift+ свернуть всё дерево колод.
(минус — уменьшить количество информации)

 

Field Modifier: Random Item

Теперь можете использовать и такие модификаторы поля:

{{random:

Содержимое поле разбивается на список по запятым и показывается только какой-то один случайным образом выбранный элемент списка.

{{sound:
Такая же фишка, только запятые не нужны:

берутся все звуковые файлы из поля и случайным образом воспроизводится только один.

??? А это относится к автоматическому воспроизведению или только по нажатию соотв. иконки ???

{{list:

Содержимое поле разбивается на список по запятым и показывается в виде упорядоченного списка.

Нет запятых — делится по точкам с запятой.

{{sublist:

Содержимое поле разбивается на вложенные списки сначала по точкам с запятой, затем по просто запятым и показывается в виде маркированного списка.

Первый элемент подсписка (тот, что до первой запятой) показывается как строка верхнего уровня (типа как название подсписка).

Примечание Проблема только в том, что на мобилке такие поля будут простым перечислелнием через запятую, а озвучка прозвучит вся.

 

Hint Next and Hint All

F9

показать следующую подсказку

Shift+F9

раскрыть все подсказки

подсказка — это {{hint:Поле}}

Maximum images height in card editor

Всё гениальное — просто.

Так и тут.

Ограничивает вертикальный размер изображений
двустами пикселями (200px максимум) в редакторе записей.

Ни добавить, ни убавить.

Можете задать свой размер.

 

Power Create Lists

В редакторе записей появляются ещё три кнопочки:

  • O для создания нумерованных списков

  • U для создания неупорядоченных списков

  • I для создания вложенных списков (увеличения отступа)

Один Enter создаст следующий пункт списка,
повторный Enter завершит список совсем
(для вложенного закроет текущий уровень
и вернёт на предыдущий).

Очень удобно такие простые списки затем гонять
через всяческие рандомизаторы на JavaScript.

Уважаю это дополнение за минимальность кода.

 

Rebuild All

В оригинале под списком колод появляется ещё одна кнопка Rebuild All для того, чтобы перестроить разом ВСЕ фильтрованные колоды.

Удобно для тех, кто на регулярной основе пользуется большим количеством фильтрованных колод.

Есть и косячок: вылезает какая-то горизонтальная линия (ещё одна), в обычной работе Anki скрытая.

Да и команду меню всё-таки хотелось бы, кнопки эти нижние не так очевидны и удобны в работе.

 

Refocus Card when Reviewing

По умолчанию эта возможность в сборке отключена (пока это единственное такое отключение модуля в сборке).

При включении будет устанавливать фокус на самой стороне карточки, а не на кнопках под ней, чтобы можно было сразу же, без дополнительного клика мыши или нажатий Shift+Tab, начать стрелочками с клавиатуры прокручивать содержимое стороны карточки.

Может оказаться удобно для тех, кому часто надо разглядывать мелкие детали на больших картинках, которые по размеру меньше монитора.

Осторожно!
Но с этим дополнением вылезает и один косяк:
пробел начинает вести себя точно так же, как и Enter всегда ведёт, то есть перестаёт отлавливать автоматическую генерацию нажатий, поэтому если вы случайно зажали пробел, то у вас моментом успеют пролететь подряд сразу несколько карточек.
Подсказка не забудьте откатить эти случайные нажатия по Ctrl+Z

 

Search on Review Time

 if COMPARTMENT['Search cards based on review time']:
# Search cards based on review time
# https://ankiweb.net/shared/info/3262774902
# by: muflax <mail@muflax.com>, 2014

# Search for cards based on their review time.
#
# Use 'time' to search for cards based on their last review time, 'timeavg' for their average review time and 'timetotal' for their total review time. Time is in seconds, and it accepts comparisons like 'prop'.
#
# Examples:
#   'time:3' finds cards that took up to 3 seconds during the last review, i.e. very easy cards.
#   'timeavg:<=4' finds cards with less than 4 seconds review average.
#   'timetotal:>60' finds cards that took more than 1 minute to study over their lifetime.
| muss ich immer alles müssen was ich kann
| eine hand trägt die welt
| die andre bietet getränke an
| ich kann mit allen zehn füßen in zwanzig türen
| und mit dem elften in der nase ballette aufführen
| aber wenn ich könnte wie ich wollte
| würd ich gar nichts wollen
| ich weiß aber, dass alle etwas wollen sollen
— Wir sind Helden
Müssen nur wollen 2007
Думаю, смысл уже понятен:

появляются дополнительные условия для поиска и фильтрации.

time:3 ищет карточки, последний ответ на которые занял всего 3 секунды.

timeavg:<=4 ищет карточки со средним временем просмотра до 4 секунд включительно.

timetotal:>60 ищет карточки, на которые по сумме всех просмотров смотрели более 1 минуты.

 

Search from Editor

В окне добавления/редактирования записей появляется
кнопочка F с горячей клавишей Ctrl+F, которая

открывает Обзор и ищет в нём все записи,
у которых есть такое же поле и с таким же содержимым.

Поле берётся то, в котором на момент активации кнопочки
находится текстовый курсор.

Можно выделить часть содержимого поля,
тогда будет выполняться поиск только выделенного текста.

Если при клике по кнопке удерживать ещё и клавишу Shift,
то будет выполняться поиск по всем полям.

К сожалению, поиск по нажатию Ctrl+Shift+F не запускается. Надо бы сделать.

 

Search Google Images for selected words

При просмотре карточки
  1. на её стороне можно выделить текст,

  2. кликнуть правой кнопкой мыши

  3. и отправить на поиск в веб-браузер по умолчанию.

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

 

Small add cards dialog

Снимает ограничения на минимальный размер окна Add/Edit Note

Ведь, если звезды зажигают —
значит — это кому-нибудь нужно?
— Владимир В. Маяковский
Послушайте!
Не знаю, кому это действительно нужно

(у кого на самом деле столь маленькие экраны),

не то чтобы мне сильно хотелось так сжать это окно добавления/редактирования записей, но

Просто не люблю всякого рода надуманные ограничения,

именно поэтому сей код присутствует здесь.

Чем надуманные ограничения отличаются от?
ненадуманных (разумных)

Они стремительно деградируют (пересекают грань разумного).

Хороший пример: showText()

для мизерных сообщений разворачивает
огромную чистую белую простыню размером в полэкрана.

 

Strikethrough button in editor window

В окне Добавление/Правка появляется ещё одна квадратная кнопочка:

на сей раз для зачёркивания текста.

Зачем нужен на карточке зачёркнутый текст,

ведь его всё равно не надо будет учить?

На самом деле зачёркнутый текст на самой карточке

можно и не зачёркивать, а стилизовать как угодно, например:

 /* strikethrough */
 s, strike {
  text-decoration: none; /* line-through; by default */
  font-family: monospace;
 }

Таким образом можно в поле выделить нужную часть текста не только цветом, полужирным или курсивом, но и зачеркнув её (это удобно, когда минимальных стандартных оформительских возможностей окна добавления/редактирования записей уже не хватает).

Примечание
U
Точно так же можно использовать и подчёркивание с кнопочки U,
ведь само по себе подчёркивание в чистом виде никому не нужно,
поскольку однозначно ассоциируется со ссылкой.

 

Toggle Full Screen

F11 разворачивает главное окно Anki на весь экран и сворачивает обратно.

Подсказка
надо бы ещё ставить галочку,
чтобы открывать Обзор и Добавление/Правку записей
развёрнутыми на весь экран.

Максимизация окна в PyQt, кстати говоря,
работает не так стабильно.

and Hide Menu Bar

версия от Glutanimate

Предупреждение
также прячет и строку меню
при этом перестают работать вообще
все горячие клавиши, заданные в этом меню,
даже Undo Ctrl+Z

При этом совершенно неважно, где создан QAction, mw. или mw.menu_bar.
в любом случае его горячая клавиша перестаёт работать

Выход здесь простой

в момент скрытия меню просто подцеплять действие к главному окну

        mw.menuBar().hide()
        mw.addAction(self.action)

а в момент возвращения меню на экран отцеплять экшн

    mw.menuBar().show()
    mw.removeAction(self.action)
F11 таким образом сохраняет свою работоспособность

при этом в меню появляется для неё нормальный пункт

Осторожно! при этом все остальные столь полезные горячие клавиши
по-прежнему перестают работать
Да, конечно, можно перецеплять и их, также как и F11,

тем более, что стандартных клавиш в меню не так-то уж и много.

Но!

Есть способ лучше!
Однако об этом позже.

Подсказка
Надо!
выходить из режима F11 и по нажатию клавиши Escape тоже.
Пробовал отключать и нижний виджет (фрейм) с кнопками,

но пользоваться оказалось крайне неудобно (если не практически невозможно),
потому что курсор по-прежнему уходит на эти невидимые кнопки.

 

' StandAlone

  • ✓ ' Clear Field Formatting HTML

  • ✓ ' Collapse Them All

  • ✓ ' Edit Audio Images

  • ✓ ' Editor fontsize

  • ✓ ' F4 Edit

  • ✓ ' If tag

  • [?] ' Later not now button

  • [?] ' More Answer Buttons for ALL Cards

  • ✓ ' More Decks Stats

  • ✓ ' REPL print Debug Console + menu DABSY + menu file help + openHelpInternational

  • ✓ ' View HTML source with JavaScript and CSS styles

  • ✓ ' Zooming

' Clear Field Formatting HTML

Очистка форматирования содержимого полей записей.

Важно! Перед массовым изменением записей
обязательно создайте резервную копию всей коллекции!
Первым делом задаётся вопрос:

В каких полях необходимо выполнить очистку?
В ответ ожидается список полей через запятую.
Пустой ответ означает запрос на изменение ВСЕХ полей.

Изменения не затронут шаблоны карточек, речь идёт только о полях записей. Меню из 4етвёрки основных команд появится буквально везде, не только в главном меню (действует на запись показываемой карточки) и меню Обозревателя (действует на записи выделенных карточек), но и в окне добавления/редактирования записей, и в контекстном меню колоды в списке колод.

Варианты очистки:

  • Очистить форматирование полей (но оставить переводы строк)

  • Очистить вообще любое форматирование ХТМЛ

  • Очистить только переводы строк

  • Частичная очистка (только конкретные теги или замена цвета)

В основном это надо тем, кто часто копирует из какого-нибудь pdf-файла целыми абзацами, при этом порой возникают всякие косяки с цветом и переводом строк.

Тег <img src=…​ > остаётся всегда, потому что используется Anki для работы с изображениями.

Если теги перевода строк BR DIV остаются на месте, то все атрибуты типа style="…​" из них удаляются. Если вы удаляете только переводы строк, оставляя остальное форматирование на месте, то все атрибуты удаляемых тегов также исчезнут, хоть бы они и содержали информацию об оформлении.
Никакие span на их место не подставляются.

Теги, которые могут быть удалены, оставляя все остальные:
A B I U P S sub sup FONT.

Причём некоторые из них удаляют также синонимы типа STRONG.
Ключевые слова img и sound удалят из записей
все изображения и звуки/видео соответственно.
Ключевое слово tags уберёт все метки с записей.

В окне добавления/редактирования действие команды
распространяется только на текущее поле, а не на всю запись.

Основывается на дополнениях:

 

' Collapse Them All

Сворачивает и разворачивает дерево колод в Обозревателе.

В меню Переход появляются две новые команды:

  • Развернуть всё дерево

  • Свернуть все ветки

и горячие клавиши Ctrl+Shift+Plus и Ctrl+Shift+Minus соотв.

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

Это дополнение уже стало частью функциональности аддона Editor fontsize

Различает русский и английский языки оболочки.

 

' Edit Audio Images

При просмотре карточки нажатие клавиши F10 откроет во внешних редакторах все изображения, аудио- и видео-файлы данной карточки.

Ctrl+F10 откроет только картинки, Shift+F10 только звуки и видео.

Пользователь может задать свои горячие клавиши, просто отредактировав исходный код скрипта.

Если указать:

win_open_edit = 'edit' # 'open' #

то какой именно редактор открывать под Windows — будет определяется расширением файла. Если у данного расширения есть в контекстном меню команда Edit, то для открытия редактора будет использоваться именно она, а не команда Open (скажем, если по двойному клику картинки открываются FastStone Image Viewer, а редактируются Paint.NET).

В окне добавления/редактирования записей появляется кнопочка, при её нажатии (или при горячей клавише F10) будут отправлены во внешние редакторы все медиа-файлы, но не всей записи сразу, а только текущего поля (в котором находится курсор).

Поскольку очевидным образом такое дополнение очень сильно зависит от способа запуска приложения в операционной системе компьютера, то данный аддон работает только в Windows и macOS.

Для маководов сторонним разработчиком предложены дополнения
Edit image files externally: ankiweb.net/shared/info/1829440730
Edit mp3 files externally: ankiweb.net/shared/info/1419938619

20.02.2017

Исправлено:

Теперь запускаются действительно ВСЕ файлы,
а не только первое изображение и первый найденный звук.

При просмотре карточек добавлены горячие клавиши Ctrl+F10 и Shift+F10 для редактирования только картинок и только аудио соотв. В окне добавления/редактирования записей по-прежнему только F10

Добавлена поддержка macOS.

Под Windows теперь пользователь также может задать полностью свои команды на запуск для изображений и аудиофайлов отдельно, разумеется. В тексте скрипта их надо задавать, да.

К сожалению, обновления картинки-звука в кэше просмотрщика Anki добиться не удалось, так что по-прежнему, изменения становятся видны только после перезапуска Anki.

 

' Editor fontsize

Началось всё с необходимости увеличить шрифт в редакторе шаблонов карточек в левых областях:

  • Шаблон лицевой стороны (вопроса),

  • Таблица стилей,

  • Шаблон оборотной стороны.

Казалось бы, необходимость такой настройки очевидна, не у всех же орлиное зрение. Ан нет.

А дальше понеслось: захотелось увеличить шрифт в окне редактирования поля в формате HTML, в окне редактирования дополнений, в окне сообщений об ошибках…​

В главном меню Карточки при просмотре карточек действуют команды

  • F4 для вызова редактора полей записи показываемой карточки,

  • Shift+F4 для перехода напрямую к редактированию шаблона карточки,

  • Ctrl+F4 для перехода напрямую к правке списка полей записи.

Кстати говоря, поскольку это функциональные клавиши, а не просто буковка e при латинской раскладке клавиатуры, то все эти горячие вызовы прекрасно работают и внутри поля {{type:…​}}

Да, и в списке полей типа записей тоже можно изменить размер шрифта. И этот же шрифт действует и в окне со списком самих типов записей.

Shift+F4 и Ctrl+F4 также работают в окне добавления/редактирования записей.

Сюда же добавилась функциональность:

в окне добавления/редактирования записей F4 является синонимом для Ctrl+Shift+X
то есть вызывает редактор HTML для поля, в котором находится курсор.

С этим дополнением запоминаются текущие размеры окон редактирования HTML поля, редактирования исходного текста дополнения и их положения на экране.

В окне редактирования можно настроить шрифт области поиска, списка карточек, левого дерева. Кстати говоря, в дерево добавлена возможность свернуть все метки, все типы записей, все колоды и т.д. И добавлены некоторые популярные запросы на поиск, которые обычно приходилось заносить в Избранные.

Кстати говоря, в этом дереве действуют команды дополнения 'Collapse Them All' Развернуть/Свернуть одновременно все ветви по Ctrl+Shift+Minus и Ctrl+Shift+Plus соотв. Но есть нюанс: при сворачивании остаётся видимым первый уровень. Ctrl+Alt+Shift+Minus свернёт всё окончательно.

Вдохновение на изменения цвета найдено в аддоне 'Night Color', сами цвета найдены на 'ПереполненииСтека'.

Сюда же до кучи добавлена поддержка 'иерархических тегов' (это те самые метки, которые через двойное::двоеточие).

Полужирный текст в строке поиска можно отменить,

Да, разумеется, вы можете в исходнике дополнения указать желательные вам шрифты и их размеры, а также свои горячие клавиши. Для каждой выделенной области вы можете подобрать (назначить) свой шрифт и его размеры. Главное, не забудьте сохранить изменения и перезапустить Anki.

' F4 Edit

Позволяет по нажатию F4 перейти к редактированию полей записи той карточки, которую в данный момент видите. По сути, синоним стандартной клавише e, только работает и при русской раскладке, и при Caps Lock, и внутри поля для тайпинга.

Ctrl+F4 позволяет перейти непосредственно к редактированию списка полей данного типа записей.

Shift+F4 позволяет перейти непосредственно к редактированию шаблона карточки.

В окне добавления/редактирования полей записи F4 действует как синоним для клавиатурного сочетания Ctrl+Shift+X, то есть позволяет перейти к редактированию кода HTML того поля, в котором находится курсор.

Также в окне добавления/редактирования полей записи действуют горячие клавиши
Ctrl+F4 и Shift+F4 для кнопок Поля…​ и Карточки…​ соответственно.

Клавиша F4 удобна для тех, кто привык редактировать файлы из Total Commander и подобных файловых оболочек. Вы можете назначить другие горячие клавиши для этих действий, просто отредактируйте исходный код дополнения и перезапустите Anki.

 

' If tag {{#tag:TagName}} text {{/tag:TagName}}

Основной смысл дополнения:

создавать какую-то часть карточки только в случае,
если у записи проставлена указанная метка.

{{#tag:leech}}вампир{{/tag:leech}}

Как это сделать с помощью JavaScript:

<div id="text">&nbsp;</div>
<span style="display:none;" id="Tags">{{Tags}}</span>
<script>var d = document,
Tags = d.getElementById('Tags').innerHTML.split(' ');
if (Tags.indexOf('leech')>-1) {
 d.getElementById('text').innerHTML = 'Заколебал ты!';
 d.getElementById('text').style.color = 'red';
}</script>

В чём плюс javascript — будет работать и в телефоне.
Использование дополнений доступно только на десктопе.

Вы можете указать в исходном коде дополнения
другой разделитель: SEPARATOR = '::'
если назначили другой и в дополнении Hierarchical Tags 1089921461

{{#tag:Hierarchical::tree::SubtagName}}text{{/tag:Hierarchical::tree::SubtagName}}
Метка может быть иерархической.

Вы можете выставлять условие также в зависимости
только от нижнего или верхнего имени в сложной метке.

{{#subtag:SubtagName}}text{{/subtag:SubtagName}}
{{#suptag:Hierarchical}}text{{/suptag:Hierarchical}}

Создано по запросу.

Вы можете указать, что какая-то часть карточки будет использоваться только в случае, если карточка находится в указанной колоде,

{{#deck:Deck::path::Name}} Attention, please! {{/deck:Deck::path::Name}}

подколоде или у неё именно такая родительская колода.

{{#subdeck:Name}}<style>img{width:345px;}</style>{{/subdeck:Name}}
{{#supdeck:Deck}}WOW MOM{{/supdeck:Deck}}

Различать родительскую колоду удобно, например,
в случае повторяющейся вложенной структуры подколод:

Русский язык
  Трудные
  Остальные
Математика
  Трудные
  Остальные

Трудные выделены в отдельную подколоду, поскольку это даёт возможность назначить пиявкам отдельное от нормально запоминающихся карточек расписание, интервалы и т.п.

Доделано по итогам обсуждения.

{{Supdeck}}

Также вы можете просто показывать на карточке метку (целиком либо только старшую или младшую часть иерархии) или название колоды (целиком либо только самую верхнюю или самую нижнюю) только в случае, если они совпадают с указанным именем:

{{tag:planets::Earth}}
{{subtag:Ticket to the MOON}}
{{suptag:One way ticket}}
{{deck:Geo::Islands and Penisullas}}
{{subdeck:Lakes and Rivers}}
{{supdeck:Russia}}

Внимание! Подстановка полей НЕ работает в секции стилей,
только в шаблонах лицевой и оборотной сторон карточек.

Это дополнение не работает (корректно?) в областях предпросмотра
окна редактирования шаблонов Карточки…​

' Wide getTag dialog popup window

Просто делает чуть больше окно Добавить/Удалить метки в Обозревателе.

Удобно тем, кто пытается перенести в метки разветвлённую структуру колод/подколод, получив предупреждение о большом количестве колод в коллекции.

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

 { Окно добавления/удаления меток сохраняет заданные вами ширину и позицию на экране }

Начальную ширину окна можно задать в переменной minWidth=
при редактировании исходного кода дополнения.

Но в этом нет острой необходимости.

Дополнение запоминает позицию и размеры окна работы с метками

даже между сессиями (правда, отдельно для каждого профиля).

сделано по запросу

' Search an asterisk in Browse

Anki 2.0 Monkey Patch

Позволяет искать в Обзоре и в фильтр-колодах

именно звёздочку. Для этого надо указать \*
то есть экранировать её.

Просто звёздочка * работает обычно,
как и работала: ищет ноль или больше любых символов

% ищет именно процент, а не как было всегда,
тоже ноль или больше любых символов

Экранированное подчёркивание \_
позволяет искать именно символ подчёркивания,
а не строго один любой символ.

 

' Later not now button

Добавляет кнопочку Позже, Не сейчас слева от кнопки Показать ответ и слева же от кнопок оценки ответов.

Позволяет просто перейти к следующей карточке в очереди, никак не отвечая на эту, не откладывая, не исключая и не отфильтровывая её.

Карточка остаётся на своём месте в очереди, поэтому, как только внутренний движок Anki по той или иной причине обновит состояние очереди, карточка будет показана вновь (обычно это когда вы в следующий раз за день приступите доучивать карточки, ну или отложите какую карточку либо отредактируете).

В советской очереди это выглядело так: человек, чья очередь к прилавку уже подошла, ещё чего-то ждёт (второго человека, когда по одной банке в обе руки; либо там деньги ему кто-то должен прибежать принести или талоны там) и говорит следующему: "Ну вы покупайте, пока я жду `чего-то там…​ у моря погоды`"

Очень удобная горячая клавиша: Esc Escape (Побег)

Идея была найдена при разборе работы дополнения More Answer Buttons for New Cards

 

' More Answer Buttons for ALL Cards

Добавляет кнопочку "Позже, не сейчас" и от 1 до 4 кнопок (по умолч. 4) с определёнными интервалами, причём делает это для ВСЕХ карточек, а не только новых/изучаемых.
Горячие клавиши Esc, 6, 7, 8, 9 соотв.

В этом случае ответ в истории просмотров не фиксируется,
лишь карточке устанавливается дополнительный интервал
(смысл действа простой русской речью: я отвечу на это позже, через столько-то дней).

По кнопке Позже, не сейчас (горячая клавиша Escape) карточка пропускается, но остаётся на своём месте в очереди на просмотр, поэтому как только Anki обновит состояние очереди (скажем, в следующих раз, когда вы в течение дня начнёте учить карточки дальше), эта карточка будет показана вновь.

Вы можете задать свои собственные:
  • горячие клавиши,

  • интервалы

  • и метки для кнопок,
    просто отредактировав исходный текст аддона.

Горячие клавиши Ctrl+Alt+Shift+L позволяют показывать интервалы
непосредственно на кнопках, а не мелко над ними.
Или по команде меню Вид — Кнопки оценок - без меток

Вдохновение искалось в дополнениях:
Есть и продвинутая версия этого дополнения:

 

' More Decks Stats

Была пара-тройка просьб выделить оформление списка колод из Must Have 67643234 в отдельное дополнение.

Если выставлена галочка Кнопка Учить колоду, то в конце каждой строки показывается кнопка воспроизведения, клик по которой сразу открывает первую карточку в очереди на заучивание/повторение сегодня.

Сделано чисто для визуализации, на деле необходимости в том, чтобы занимать драгоценное место в списке колод этой кнопкой, совершенно нет. Просто кликните по любому месту строки колоды — и начнётся процесс разучивания карточек без лишнего клика по кнопке Учить на странице общего представления колоды.

Если вам по-прежнему нужна эта страница колоды: просто кликните по имени колоды — страница сводки по колоде и откроется.

Вы можете задавать собственные заголовки колонок,
для этого достаточно отредактировать исходный код дополнения.

Если вам неприятно смотреть на числа, вы можете скрыть их вовсе.
Те колоды, в которых есть что учить сегодня — выделены полужирным шрифтом.

Можно вообще временно деактивировать дополнение,

если есть такая необходимость — посмотреть на стандартный список колод.

Идея взята из дополнений Unseen and buried counts 161964983 и deck overview tweaks

' Decks Total Average

Готов к Anki 2.1

Может работать совместно с аддоном Decks Total.

Под списком колод показывает суммарно для всей коллекции:

  • количество новых карточек,

  • сколько раз будут показаны разучиваемые карточки,

  • количество карточек, которые следует сегодня повторить,

  • Пора (разучиваемые+повторяемые),

  • всего на сегодня.

А также:

  • среднюю скорость, набранную сегодня,

  • и ожидаемое время, которое при сохранении такой скорости минимально потребуется для завершения сегодняшних просмотров.

В развитие дополнения Decks Total.

 

' REPL print Debug Console

Позволяет открывать Debug Console (Консоль Отладки)

из Главного МенюИнструментыОтладка REPL print Debug Console
либо с помощью комбинации горячих клавиш Ctrl+Shift+D

Просто наберите с клавиатуры 'Hello, world!' и нажмите Ctrl+Shift+Enter

или напечатейте print u"Привет, мир!" и надавите Ctrl+Enter

Вы также можете назначить горячие клавиши на свой вкус,
просто зайдите в ИнструментыДополнения_REPL_print_Debug_ConsoleРедактирование…​
и исправьте строку:

 HOTKEY = "Ctrl+Shift+D"

затем сохраните изменения и перезапустите Anki.

Без этого дополнения вы можете запускать Консоль Отладки якобы через Ctrl+:

Это ад! АДИЩЕ!!!

На деле двоеточие : бегает по клавишам в зависимости от раскладки клавиатуры,
к тому же частенько требует нажатия Shift, поэтому фактически вероятнее всего
при обычной раскладке клавиатуры вам придётся нажимать
Ctrl+Shift+; (En) для английского языка ввода и
Ctrl+Shift+6 (Ru) для русского языка.

Если же вы используете не самую обычную раскладку клавиатуры,
то вам придётся эту клятую кнопочку с двоеточием : отыскать
и научиться нажимать самостоятельно.
Такова плата за успех использование редких нетипичных раскладок.

Больше подробностей читайте в Руководстве Пользователя (eng)
и Написании Дополнений (orig).

# -*- mode: Python ; coding: utf-8 -*-
# _REPL_print_Debug_Console.py
# https://ankiweb.net/shared/info/887733884
# https://github.com/ankitest/anki-musthave-addonz-by-ankitest
# License: GNU GPL, version 3 or later; http://www.gnu.org/copyleft/gpl.html
# Copyright (c) 2017 Dmitry Mikheev, http://finpapa.ucoz.ru/
# No support. Use it AS IS on your own risk.
"""
' REPL print Debug Console
"""
from __future__ import unicode_literals

import anki
import aqt

from aqt import mw
from aqt.qt import *

import anki.lang
_lang = anki.lang.getLang()

HOTKEY = "Ctrl+Shift+D"

def _REPL():
    action = QAction(
        "&Отладка REPL print Debug Console" if _lang == "ru" else
        'REPL print &Debug Console', mw)
    action.setShortcut(QKeySequence(HOTKEY))
    action.triggered.connect(lambda: mw.onDebug())
    mw.form.menuTools.insertAction(mw.form.actionNoteTypes, action)
    font = action.font()
    font.setBold(True)
    action.setFont(font)
    action.setIcon(QIcon(':/icons/colors.png'))
    # mw.form.menuTools.insertSeparator(mw.form.actionNoteTypes)

_REPL()

 

' View HTML source with JavaScript and CSS styles

Идея простая: предоставить доступ к исходному HTML-коду карточки на манер того, как это делают обычные веб-браузеры. Очень удобно при отладке сложных стилей или javascript для уточнения, что же всё-таки происходит на кухне:

В главном меню появляется пункт Карточки — Показать Исходник HTML и горячие клавиши Ctrl+F3

Поскольку в исходнике огромное место занимает код jQuery и затеняет понимание сути, сделана ещё одна команда: Показать Исходник HTML Body и горячие клавиши к ней Alt+F3. Она показывает ХТМЛ без jQuery.

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

Добавлены команды на просмотр кода верхнего и нижнего виджетов (DABSY и кнопки),
иначе не получалось понять, почему же кнопки так весело колбасятся, что с ними ты ни делай.

С лета 2017:

Добавлено сохранение положения и размеров окна,
а также можно назначить свой шрифт и указать его размер,
просто отредактировав исходник дополнения и перезапустив Anki.

 

' Zooming

Пропорционально увеличить/уменьшить масштаб всего текста на карточке,
изображения могут тоже синхронно изменяться,
но это уже по выбору пользователя.

  • через Ctrl+Plus и Ctrl+Minus на клавиатуре

  • через Ctrl + колёсико мыши

  • через меню View/Zoom

  • Пользовательский размер по Ctrl+0 (цифра ноль, не буква О)

  • Первоначальный размер (100%) по Ctrl+Alt+0 (цифра ноль, не буква О)

Если другое дополнение скрывает строку меню, то этот Zooming перестаёт работать :-(

Масштаб сохраняется между сеансами работы, причём для каждого профиля отдельно.
Шаг изменения ±10% (без верхнего предела), текущие значения можно увидеть по Alt+0.
Раздельно устанавливаются множители