Тонкая настройка «Sublime Text 3» — Можно Подумать
Понравился текстовый редактор Sublime Text.
Раньше-то Eclipse был нашим всем, но на днях произошло неприятное: Eclipse падает всякий раз при копи/пэйст. Открыт соответствующий баг, решения пока нет, а между тем работать в Eclipse стало и решительно, и нерешительно невозможно. Вероятно, можно откатиться на более старые версии, но не факт, бо тогда и окружающие его пакеты тоже надо даунгрейдить, а это не тру.
Но под Linux есть много всяких IDE для разработки, даже есть почти нативное KDevelop. Из кроссплатформенных на слуху:
- PyCharm от JetBrains — выглядит адекватно, но от него завыли кулеры и памяти поуменьшилось изрядно, при этом проект внутри ещё не создан. Нет.
- Atom от GitHub, которое сегодня тоже от Microsoft. Построен на электроне, а это нет!
- VS Code (он же Visual Studio Code) от Microsoft. Нет.
- Sublime Text от кого-то из гугла (Джон Скиннер).
Тут и остановимся.
В основе своей Sublime Text разочаровывающе примитивный и требуется время на его освоение и настройку, но это и хорошо. Можно подключать к простой основе только те расширения, которые понадобятся в работе, а это unix way. У него много документации (unix way!)? Он в принципе хочет каких-то денег (not a unix way!), но не настойчиво да и не особо много, поэтому всё норм.
1Установка Sublime Text в Debian
Следуем общей инструкции:
Install the GPG key:
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
Ensure apt is set up to work with https sources:
sudo apt-get install apt-transport-https
Select the Stable channel to use:
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
Update apt sources and install Sublime Text
sudo apt-get update && sudo apt-get install sublime-text1. 1
Основная настройка Sublime Text
Для управления пакетами надо включить Package Control (инструкция):
- Tools > Install Package Control…
Расширение возможностей Sublime Text
- Tools > Command Palette… (Ctrl+Shift+P)
- Начать набор команды «install» > появятся подсказки > Выбрать «Package Control: Install package»
- начать набор названия пакета, который надо установить > появятся подсказки > выбрать нужный и даблклик или Enter.
Последовательно установить
- AdvancedNewFile
- Anaconda — autocomplete
- All Autocomplete
- AutoFileName
- Base16 Color Schemes — стили подсветки кода; мне очень зашло «base16-phd»
- BracketHighlighter
- DocBlockr
- Emmet — шаблоны для верстальщиков
- Git
- GitAutoCommit
- GitGutter
- Markdown Extended
- SideBarEnhancements — слева появляется сайдбар, там и отображаются файлы проекта (и вообще открытые), и появляются команды для управления файлами на ssd
- SublimeLinter — затем плагины для линтеров по определённым правилам для определённых языков
- Terminus — более продвинутая консолька
- по слову Theme можно выбрать иную тему оформления, нежели дефолтную Adaptive (кагбэ рейтинг тем). Для установки темы надо знать её точное название.
Restart Sublime Text
Тонкая настройка
каждого плагина Sublime Text по-отдельности займет некоторое время, но оно того стоит. Ковыряние в файлах настроек и прописывание инструкций приносит ощущение полного контроля и управления. Unix way же!
1.3.0
Базовые настройки
Preferences > Settings
{ // Общий размер шрифта редактора "font_size": 21, "word_wrap": true, // Set to a value other than 0 to force wrapping at that column rather than // the window width. See "wrap_width_style" for extra options. "wrap_width": 100, // Настройки отступов В КАЖДОМ ФАЙЛЕ // Ctrl + Shift + P (to activate the command palette) // Type "Indentation", // Choose "Indentation: Convert to Tabs" "detect_indentation": true, "tab_size": 4, "translate_tabs_to_spaces": false, // Тема оформления "theme": "Adaptive.sublime-theme", "ignored_packages": [ "Vintage", ], "color_scheme": "Packages/Base16 Color Schemes/Themes/base16-phd. tmTheme", "dark_theme": "Adaptive.sublime-theme", "light_theme": "Adaptive.sublime-theme", }1.3.1
Настройка темы
Пусть будет Adaptive.
Preferences > Customize Theme
Откроется два файла, один нередактируемый (общие настройки), второй редактируемый, бо сугубо пользовательский. Идея в том, что из общего можно копировать строки настроек в пользовательский файл и всё будет норм.
Иногда эти файлы открываются поодиночке.
Например, впишем это.
// Documentation at https://www.sublimetext.com/docs/themes.html { "variables": { "font_size_sm": 24, // размер шрифта вкладки "font_size": 20, // размер шрифта названия файла в Side bar "font_size_lg": 18, // размер шрифта группы файлов в Side bar }, }
1.3.2
Настройка Anaconda
В Anaconda встроен довольно строгий линтер, он считает неправильными почти все строки любого кода (и он, конечно, прав), помечая их белыми прямоугольниками. Эту функциональность лучше передать отдельному плагину, бо лучше использовать линтер под свой язык программирования и строго под выбранные юзером правила правописания, которые под тот же Python бывают очень разные.
Preferences > Package Settings > Anaconda > Setting — User
Этот файл пуст, можно прописать там и отключение линтера анаконды, и путь к рабочей версии Python:
{ "settings": { "python_interpreter": "/usr/bin/python3", "anaconda_linting": false } }
Позже можно будет использовать возможности Anaconda для автоформатирования кода по CTRL-ALT-R (насколько это, конечно, применимо к тому же питону) в соответствии с правилами PEP8. Там тоже надо настраивать точнее, бо по-умолчанию эта шняга заменяет табы четырьмя пробелами.
Быстрое решение:
View > Indentation > Tab Width: 4 //эту настройку в будущем уже не трогаем
View > Indentation > Convert Indentations to Tabs
Или же:
В правом нижнем углу окна отображается эта же настройка ‘Tab Size: 4’.
Левомышечный клик по ней открывает то же самое меню, что из View. Остаётся кликнуть по последней команде: Convert Indentations to Tabs. Можно использовать каждый раз после CTRL-ALT-R.
Надо пореже использовать CTRL-ALT-R и воспитывать в пальцах изначально принудительное правописание и отступы, в Python этот аспект важнее, чем в других ЯП.
1.3.3
Настройка хоткея для вызова Sidebar
Вызов или через View > Sidebar, или через последовательное нажатие «Ctrl+k, Ctrl+b».
Клавиши можно переназначить, например, на Ctrl+\: Preferences > Package Settings > Side Bar > Key Bindings — User
[ // Toggle the Sidebar {"keys": ["ctrl+\\"], "command": "toggle_side_bar"}, ]
1.3.4
Настройка консоли для запуска скриптов на Python
По-умолчанию дежурный запуск скриптов на Python делается во встроенной консольке через Ctrl+B. Годно, если надо просто что-то выполнить, и нет, если подразумевается интерактивность со стороны юзера.
Ctrl+Shift+P > Package Control: Install Package > Terminus
Затем сохранить в каталог с пакетами (/~/. [ ]*File \»(…*?)\», line ([0-9]*)», «selector»: «source.python», «env»: {«PYTHONIOENCODING»: «utf-8»}, «variants»: [ { «name»: «Syntax Check», «shell_cmd»: «/usr/bin/python3 -m py_compile \»${file}\»», } ] }
Путь /usr/bin/python3 общий, тут можно задать любое направление к разным версиям, буде таковая необходимость соизволит явиться.
Под виндой, соответственно, в shell_cmd надо указать путь к python.exe, и делать это надо чуть заковыристо, через двойные косые: «shell_cmd»: «D:\\.python_venvs\\general_python\\Scripts\\python.exe -u \»$file\»».
Эти самые pre_window_hooks и post_window_hooks пришли из плагина close_terminal.py
Ctrl+S > дать новому файлу sublime-build имя вроде ’BuildPython3.sublime-build’ и убедиться в том, что он сохраняется в /~/.config/sublime-text/Packages/User/
Tools > Build System > выбрать ’BuildPython3‘
Больше эту настройку можно не трогать. Теперь общий хоткей Ctrl+B вызовет консоль Terminus справа от окна с кодом и в ней выполнит код по заветам прописанного интерпретатора Python.
Перевод фокуса с одной панели на другую с клавиатуры через Ctrl+1 и Ctrl+2 — если на экране две панели (их можно понаоткрывать бесчетно).
тубиконтинуедт, конечно, например на https://afftomat.wordpress.com/category/sublime-text/
Шпаргалка по Sublime Text 2
Статьи из цикла
- Превращаем Sublime Text 2 в Notepad++
- Первоначальная настройка Sublime Text 2
- Шпаргалка по Sublime Text 2
В предыдущей статье по Sublime Text 2 мы рассмотрели настройки после установки программы.
Здесь же я буду описывать шпаргалку для себя и вас по данной программе, чтобы не забывать, что и как делать.
Горячие клавиши
Ctrl
+ Ё
(Ctrl
+ `
) — Открытие/закрытие консоли.
Ctrl
+ P
— Открытие/закрытие панели перехода и поиска GoAnything
.
Ctrl
+ S
— Сохранить файл.
Ctrl
+ F
— Открыть панель поиска.
Esc
— Закрыть панель поиска.
Ctrl
+ Shift
+ F
— Открыть расширенную панель поиска и замены.
Ctrl
+ F9
— Сортировка строк с учетом регистра.
F9
— Сортировка строк.
Ctrl
+ J
— Объединение выделенных строк в одну.
Ctrl
+ Shift
+ D
— Дублирование выделенного кода.
F6
— Включение/выключение режима проверки орфографии.
Alt
+ O
(Alt
+ Щ
) — Если в Sublime открыты .cpp
и .h
файлы, соответствующие друг другу, то эта комбинация клавиш переключит с .cpp
на .h
и наоборот.
Ctrl
+ F2
— Добавить к строке отметку.
F2
— Переход к следующей отмеченной строке.
Shift
+ F2
— Переход к предыдущей отмеченной строке.
Ctrl
+ /
— Закомментировать/раскомментировать код.
Ctrl
+ K
, а потом Ctrl
+ U
— Поменять регистр букв на верхний.
Ctrl
+ K
, а потом Ctrl
+ l
— Поменять регистр букв на нижний.
Ctrl
+ M
— Перейти к соответствующей скобке (закрывающейся или открывающейся).
Плагин Clipboard History
Ctrl
+ Alt
+ V
— Окно истории буфера обмена.
Ctrl
+ Shift
+ V
— Вставляет предпоследний кусок в буфере обмена.
Некоторые функции в меню
File
→ Save with Encoding
→ …
— Перекодирование файла.
File
→ Reopen with Encoding
→ …
— Открыть файл в другой кодировке.
Edit
→ Permute Lines
→ Unique
— Удалить повторяющиеся строки.
Edit
→ Permute Lines
→ Reverse
— Обратить порядок строк.
Edit
→ Permute Lines
→ Shuffle
— Перемешать строки в случайном порядке.
View
→ Layout
→ Columns: 2
— Разделить окна на две части (там вы найдете и другие способы разделения окна).
View
→ Syntax
→ …
— Выбор подсветки синтаксиса.
Goto
→ Jump to Matching Bracket
— Перейти к соответствующей скобке (закрывающейся или открывающейся).
Особые выделения
Если нажать на правую кнопку мыши и клавишу Shift
, можно проводить вертикальное выделение текста:
Если нажать клавишу Ctrl
, то можно выделить сразу несколько текстовых блоков (Множественное выделение). При этом, если не снимать выделение, то, когда начнете писать, то текст будет вводиться во всех выделенных местах:
Работа с панелью перехода и поиска GoAnything
Ctrl
+ P
1. txt
— Набираете название файла, и вы перейдете к нему. Особенно важно в режиме работы Project
.
:10
— Переходите к 10 строке.
#текст
— Если начинать с #
в тексте документа ищется текст
. При этом предлагает варианты слов, что содержать данный текст, а также потом подсвечивает все найденные варианты (слова, а не варианты, что содержать как фрагмент). Вот только не позволяет переходить ко второму и так далее результату. И предпочтение отдает словам, начинающихся с данного текста.
#тет
— Также перейдете к слову текст
.
@func
— Переходите к функции, что содержит func
.
@fc
— Также переходите к функции func
.
ma#тет
или ma@fc
или ma:10
— Sublime открывает файл, в названии которого есть ma
, а далее поиск как обычно.
Пути
C:\Users\[your username]\AppData\Roaming\Sublime Text 2
— в Windows 7 находятся все установленные плагины, настройки и так далее.
%appdata%/Sublime Text 2
— аналогичный путь.
Preferences
→ Browse Packages
— аналогичный путь.
%appdata%/Sublime Text 2/Packages
— папка с плагинами.
Плагины
Можно установить двумя способами:
- Распаковать архив с плагином в папку
Packages
с плагинами, что находится%appdata%/Sublime Text 2/Packages
. - Через
Package Control
:
Набираем Install Package
и производим установку плагина.
Работа с проектами
Если вы работаете с каким-то проектом (сайт, программа и так далее), то вы работаете обычно со множеством файлов в одной папке с подпапками. Лучше в этом случае работать с функцией проекта Вид
→ Проект
→ Панель проекта 1
.
В предыдущей статье по Sublime Text 2 мы рассмотрели настройки после установки программы.
В предыдущей статье по Sublime Text 2 мы рассмотрели настройки после установки программы.
Как настроить Sublime Text 4 для разработки на Python
Что вам нужно для разработки на Python? Первым делом в вашем списке должна быть IDE или, по крайней мере, редактор кода. Конечно, вы можете ввести свой код в любом старом текстовом редакторе, включая notepad.exe. Но зачем вам это, зная, что редакторы кода и IDE могут сделать процесс написания кода более плавным и быстрым?
Когда вы будете искать в Интернете лучшую IDE для разработки на Python, вы получите большой выбор редакторов и IDE по разным ценам и с универсальным набором функций. В большинстве лучших списков редакторов кода Python вы найдете Sublime Text, гибкий текстовый редактор с открытым исходным кодом и множеством плагинов (пакетов), созданных сообществом, для расширения его функциональности.
Зачем использовать Sublime Text 4 для разработки на Python?
Текстовый редактор Sublime — это редактор кода и текста с богатым набором функций, позволяющих упростить разработку на Python (или разработку на большинстве языков). Sublime Text — это легкий редактор кода, который, как и VSCode и Atom, использует плагины или пакеты для расширения своей функциональности до полноценной IDE.
Будучи текстовым редактором с открытым исходным кодом, он имеет активное сообщество разработчиков, создающих различные подключаемые модули, которые позволяют редактору использовать возможности IDE.
Настройка Sublime Text 4 для Python
Чтобы начать работу с Python в Sublime Text 4 (последняя версия), вам необходимо установить Sublime Text 4 и некоторые плагины. Итак, приступим.
Загрузите и установите Sublime Text 4
Загрузите Sublime Text 4 со страницы загрузок. В этом руководстве мы будем загружать и устанавливать версию для Windows, но этот процесс аналогичен другим поддерживаемым операционным системам.
Дважды щелкните загруженный установщик, чтобы запустить мастер установки.
Выберите путь для установки Sublime Text 4 и нажмите «Далее». Вы попадете в окно «Дополнительные задачи».
Выберите параметр Добавить в контекстное меню проводника , чтобы включить параметр « Открыть с помощью Sublime Text» в контекстное меню, которое появляется при щелчке правой кнопкой мыши на любом файле соответствующего типа.
Щелкните Далее . Теперь мастер готов к установке.
В окне Готово к установке вы увидите сводку выбранных вами параметров. Нажмите «Установить», чтобы установить Sublime Text.
Sublime Text 4 будет установлен, и вы увидите полное окно установки.
Нажмите Finish , чтобы завершить установку Sublime Text. Sublime Text 4 будет установлен.
Далее давайте настроим Sublime Text Editor для разработки на Python с помощью соответствующего пакета. Но сначала нам нужно установить компонент, чтобы мы могли устанавливать пакеты в Sublime Text 4.
Установить управление пакетами
Как упоминалось ранее, функциональность Sublime Text можно расширить с помощью плагинов, называемых пакетами. Для их установки, обновления и управления вам потребуется установить Package Control на Sublime Text.
Вы можете установить управление пакетами, используя меню Tools -> Install Package Control в Sublime Text.
После завершения установки вы увидите сообщение об успешной установке Package Control.
Теперь вы можете использовать палитру команд для управления пакетами.
Чтобы установить пакет, выберите «Настройки» -> меню «Управление пакетами».
Вы увидите опцию управления пакетами. Введите install, и вы увидите вариант установки, как показано ниже.
Выберите параметр Install-Package .
Теперь мы можем установить пакеты, необходимые для поддержки Python в Sublime Text 4.
Стоит отметить, что таким же образом вы можете настроить другие пакеты для настройки Sublime Text в соответствии с вашими потребностями. Конечно, мы рекомендуем вам рассмотреть Tabnine для Sublime Text для ваших потребностей в прогнозирующем завершении кода.
Установить LSP-pyslp
LSP (Language Server Protocol) может использоваться между редакторами исходного кода, такими как Sublime Text, и серверами, предоставляющими функции языка программирования. Цель протокола — разрешить реализацию и распространение поддержки языка программирования независимо от любого данного редактора. Это означает, что с помощью этого протокола любой текстовый редактор можно настроить для разработки на определенном языке.
Sublime изначально не поддерживает LSP. Однако сообщество разработало подключаемый модуль под названием LSP Project для вызова различных языковых серверов и отображения результатов в редакторе.
Для наших целей мы настроим пакет LSP-pyslp, удобный пакет для языковых серверов Python.
Чтобы установить пакет, откройте программу установки пакета, выбрав в меню «Настройки» -> «Управление пакетами», и выберите параметр «Установить пакет».
В окне пакета установки введите LSP-pylsp, и вы увидите пакет. Выберите это, чтобы установить пакет LSP-lsp.
LSP-pylsp будет установлен, и вы увидите параметр LSP, как показано ниже.
Выберите параметр LSP-pyslp, чтобы настроить параметры пакета LSP-pyslp.
Откроется файл LSP-pylsp.sublime-settings.
С правой стороны вы увидите файл настроек по умолчанию. С левой стороны вы увидите опцию с текстом «Настройки здесь переопределяют настройки в «LSP-pylsp/LSP-pylsp.sublime-settings». Это означает, что вы можете использовать этот раздел для настройки пакета LSP-pyslp.
Мы добавим несколько плагинов LSP в раздел настройки файла, чтобы включить некоторые полезные функции для разработки Python в Sublime Text.
- Mypy-ls — плагин статической проверки типов, позволяющий статически находить ошибки в вашей программе который можно использовать для форматирования исходного кода для лучшей читабельности
Чтобы добавить их, вам необходимо ввести следующее в разделе настройки файла:
{
“pylsp. plugins.mypy-ls.enabled”: true ,
“pylsp.plugins .flake8.enabled»: true ,
«pylsp.configurationSources»: [«flake8»],
«pylsp.plugins.pyls_black.enabled»: true ,
3, после добавления конфигурации Нажмите
File -> Save , чтобы сохранить конфигурацию пакета LSP и закрыть файл настроек.Создание файла Python
Использовать Sublime Text для разработки Python несложно, если у вас установлен пакет LSP.
Запустите редактор Sublime Text, чтобы открыть новый пустой файл. Вы можете написать программу на Python и сохранить ее как файл sample.py .
Например:
# Программа Python3 для замены первого
# и последнего элемента списка
# Функция подкачки
def swapList(newList):
size = len(newList)
# Обмен
temp = newList[0]
newList[0] = newList[size – 1]
newList[size – 1] = temp
return newList
# Код драйвера
3 new , 35, 9, 56, 24]
print(swapList(newList))
Теперь посмотрим, правильно ли установлены пакеты LSP.
Наведите указатель мыши на имя метода swapList , и вы увидите определения и ссылки на этот метод, как показано ниже.
Окно сообщения показывает, что метод swapList упоминается в файле sample.py и номер строки 18. Этот результат указывает на то, что пакет LSP для Python работает должным образом.
Запуск программы
Вы можете запустить программу Python, используя пункт меню Tools -> Build . Если система сборки по умолчанию не настроена, вы можете выбрать Python в меню Инструменты -> Система сборки -> Python , чтобы сделать Python системой сборки по умолчанию.
Резюме
Хотя многие профессиональные разработчики Python по умолчанию используют платные IDE, такие как PyCharm, Sublime Text Editor предлагает для начинающих разработчиков или полиглотов гибкий и легкий кроссплатформенный редактор.
Как настроить возвышенный как красивый латексный редактор | Dark Mode
Как настроить возвышенный как красивый латексный редактор | Темный режим | Windowsyoutube.com/embed/SZEXdXL_P4w» title=»YouTube video player» frameborder=»0″ allow=»accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»/>
- Загрузите текст Sublime здесь.
- Загрузите Miktex здесь.
- Загрузите Суматра в формате PDF здесь.
- Загрузите ImageMigick здесь.
- Загрузите исходный текстовый файл здесь.
Сначала установите Sumatra, затем Miktex, а затем ImageMagick. Наконец, установите Sublime.
Откройте палитру команд: нажмите
Ctrl+Shift+P
Введите «установить» в поле ввода командной палитры, после чего автоматически появится «Установить управление пакетами». Нажмите Enter, чтобы выбрать его.
Sublime Text 3 начнет установку Package Control. Это может занять некоторое время. После установки появится всплывающее окно с сообщением: Package Control успешно установлен.
Перейдите в «Настройки
» → «Настройки пакета» → «Управление пакетами» → «Настройки
{ "загрузочный": правда, "in_process_packages": [ ], "установленные_пакеты": [ «Значок файла», "Тема Агилы", "АвтоПЭП8", "аю", "ОтвлечениеБесплатноеОкно", «Цветовая схема Дракулы», «Свернуть комментарии», «ИмиджМаджик», «Количество слов LaTeX», "LaTeX-cwl", "ЛаТексТаб", "ЛаТекстулс", "ЛаТексиз", "Нетекстовые файлы", «Контроль пакетов», "Питон 3", "Улучшения боковой панели", ] }
Сохраните файл. Это автоматически установит все пакеты, необходимые для установки. Подождите 5-10 минут, пока завершится установка.
Затем откройте
Настройки → Настройки
и вставьте туда следующее.{ "auto_complete_triggers": [ { "персонажи": ".", "селектор": "source.python - строка - комментарий - константа. числовое" }, { "персонажи": "\\", "селектор": "text. tex.latex" } ], "color_scheme": "Пакеты/Цветовая схема - По умолчанию/Mariana.sublime-color-scheme", "default_line_ending": "уникс", "размер_шрифта": 14, «игнорируемые_пакеты»: [ "Винтаж" ], "открытые_внешние_паттерны": [ "*.jpg", "*.jpeg", "*.png", "*.gif", "*.zip", "*.pdf" ], "правители": [ 100 ], "размер_вкладки": 4, "theme": "Agila.sublime-theme", "translate_tabs_to_spaces": правда }
Перейдите в
Настройки → Привязки клавиш
и вставьте следующее[ { "клавиши": ["f1"], "команда": "toggle_side_bar" }, { "клавиши": ["f2"], "команда": "distraction_free_window"}, { "клавиши": ["f3"], "команда": "свернуть" }, { "клавиши": ["f4"], "команда": "развернуть" }, ]
Теперь, наконец, перейдите в
«Настройки» → «Настройки пакета» → «Latex tools» → «Проверить систему
», чтобы проверить, все ли в порядке.
В Sumatra PDF перейдите к Настройки→Дополнительные параметры
. Настройки откроются в новом текстовом документе. Измените MainWindowBackground = #252a33
и замените код в FixedPageUI
следующим
FixedPageUI [ # Легкий режим # TextColor = #000000 # Цвет фона = #ffffff # Темный режим Цвет текста = #ffffff Цвет фона = #343d46 ВыборЦвет = #f5fc0c ОкноМаргин = 2 4 2 4 Расстояние между страницами = 4 4 ]
Это активирует темный режим на Суматре. Чтобы вернуться в легкий режим, просто раскомментируйте строки под 9.0206 Light Mode и прокомментируйте строки под Dark Mode
.
Интерфейс фиксированной страницы [ # Легкий режим Цвет текста = #000000 Цвет фона = #ffffff # Темный режим # TextColor = #ffffff # Цвет фона = #343d46 ВыборЦвет = #f5fc0c ОкноМаргин = 2 4 2 4 Расстояние между страницами = 4 4 ]
- На обороте
- Учебник по латексу
« Предыдущая Следующая »
Информационный бюллетень
» Quality Research: Еженедельный информационный бюллетень, посвященный идеям и инструментам для улучшения академических исследований.