Я понял из Django Project , что вы можете использовать только фиктивную функцию gettext:
Если вы определяете пользовательскую настройку ЯЗЫКОВ, как объяснено в предыдущем пункте, это нормально. помечать языки как строки перевода, но использовать функцию «фиктивная»
ugettext()
, а не ту, что вdjango.utils.translation
. Вы никогда не должны импортироватьdjango.utils.translation
из вашего файла настроек, потому что этот модуль сам по себе зависит от настроек, и это вызовет циклический импорт. ".
Мне потребовалось некоторое время, чтобы найти решение, но я наконец получил его: выбор поля модели должен иметь кортеж с реальными функциями gettext, с лямбда-функцией, манекен может быть обернут в реальные функции gettext следующим образом:
from django.utils.translation import ugettext_lazy as _
language = models.CharField(max_length=5, choices=map(lambda (k,v): (k, _(v)), settings.LANGUAGES), verbose_name=_('language'))
вы можете использовать getline () для сохранения текущей строки буфера и winline () для сохранения текущей строки окна.
Это будет примерно так:
Может быть несколько особых случаев, о которых вам придется позаботиться, например, если позиция находится ближе к концу или началу файла или если файл меньше размера окна.
Вы можете сохранить метку для первой экранной строки, которая отображается в окне, и также восстановить ее. Пример, который выполняет команду g?
для всего буфера и восстанавливает обе позиции:
:noremap <F11> mkHmlggg?G`lzt`k
Прохождение команды:
mk
: установить отметку k
для текущая позиция H
: перейти к первой строке на экране ml
: установить метку l
для этой позиции ggg? G
: выполнить команда : перейти к отметке
l` zt
: установить эту строку первой строкой на экране : перейти к отметке
k` Просто: h getpos ()
let save_cursor = getpos(".")
" MoveTheCursorAround
call setpos('.', save_cursor)