Sublime text как включить автозаполнение

Обновлено: 08.07.2024

Как добавить пользовательское автозаполнение в Sublime Text 3?

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

Есть хороший ответ, но не совсем полный. И чтение официальных документов (Sublime Text Unofficial Documentation - Расширение сублимированного текста - completions и snippets), мне все еще интересно, как реализовать автоматическое завершение моего настроенного HTML-тега.

Что я хочу, это ниже.

Когда я помещаю

poped. (Это просто хорошо работает с моими несколькими файлами Snippet .sublime-snippet , которые были сохранены отдельно.)

Когда я помещаю

poped. В этом случае '\' экранируется, а позиция курсора находится в начале, так что

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

Когда я помещаю

. (Это просто хорошо работает с моими несколькими файлами Snippet .sublime-snippet , которые были сохранены отдельно.)

Когда я помещаю

. В этом случае '\' также экранируется и не добавляется '\n\t' (новая строка, вкладка), чтобы

. В отличие от eqq(+tab) , no '\n\t'.

Самый простой способ реализовать эти автоматические завершения - создать файл HTML.sublime-completions в папке Sublime Text Build 3059 x64\Data\Packages\User . (Так как я использую портативную версию ST3 в ОС Windows, папка может отличаться при установке ST3.) Заполнение файла текстом JSON, например

. Но запуск tab не активирован, хотя мой Preferences - Settings - User включает связанные с тангажом функции, такие как

. В этом случае активируется только Ctrl+tab . Что не так? Я не знаю.

Чтобы решить эти проблемы, я попробовал фрагменты, создав HTML.sublime-snippet файл в папке Sublime Text Build 3059 x64\Data\Packages\User . Я положил

. В этом случае разрешен только первый <snippet> . Поэтому я разделил несколько файлов фрагментов.

в файле eq.sublime-snippet и

в eqBraces.sublime-snippet файле и

в файле eqq.sublime-snippet и

в файле eqqBraces.sublime-snippet . Но они не полностью устраняют мои проблемы.

Я также спросил об этом в возвышенном User Echo. Любой, кто уже знает эту проблему, ответьте мне.

Заметил у себя на работе, что многие JS-разработчики до сих пор используют «голый» Sublime Text, матерясь и чертыхаясь после каждой пропущенной запятой, непарной скобочки или еще какой опечатки. Поэтому написал краткий гайд по исправлению этого недоразумения, которым с вами и делюсь. Итак:


Если у вас был установлен SublimeLinter-jsl, то его сначала нужно удалить с помощью Cmd-Shift-P → PackageControl: Remove Package и перезапустить Sublime.


Установите Tern for Sublime. Это плагин для Sublime, осуществляющий интерфейс с Tern — инструмент для «умного» автодополнения в JavaScript, основанный на выводе типов (type inference). Tern устанавливается вместе с плагином.

Возможно, потребуется вручную выполнить npm install в папке с установленным пакетом (для мака они лежат в

/Library/Application Support/Sublime Text 3/Packages ).

После установки обратите внимание на дополнительные опции конфигурации (включающие хинтинг аргументов функций, например), они задаются в меню Sublime Preferences → Package Settings → Tern → Settings — Default. По умолчанию они отключены из-за возможной нестабильной работы, но в моем случае проблем не было:


Затем создайте в корне проекта файл .tern-project . Структура его примерно следующая:


В loadEagerly указываются файлы, которые нужно парсить (он понимает wildcards). К сожалению, если указать там все-все-все скрипты (в моём случае), то Tern зависает намертво. Поэтому будьте осторожнее с этим, включайте только то, что необходимо.

UPD: Если юзаете Node/requireJS/angular, в мануале Tern сказано как включить умное разрешение зависимостей для исходников, тогда без явного указания скриптов в loadEagerly можно обойтись. Но я сам это не проверял.

Массив libs задает список предопределенных библиотек, которые Tern понимает без необходимости их парсить — с помощью заранее сгенерированных/написанных вручную словарей типов. Вот тут можно почитать про то, как это у него устроено. Библиотека browser означает набор встроенных API браузера.

Я хотел бы иметь возможность использовать автозаполнение для тегов html в моем коде react/jsx. Так же, как это работает для html-файлов. Могу ли я настроить sublime text 3 для включения автозаполнения тегов для файлов jsx?

стоит отметить, что вы можете включить встроенный тег Sublime ближе в JSX, скопировав и слегка изменив привязку клавиш для / что происходит с Default.sublime-package . Добавьте в пользовательскую карту ключей следующее:

предполагая, что вы используете пакет Babel, селектор meta.jsx.js будет соответствовать синтаксису JSX и включить поведение закрытия тегов. Имя области может отличаться для других пакетов, и в этом случае вы можете использовать ScopeHunter для проверки областей, которые применяется предпочтительный синтаксис JSX.

установить: babel & Emmet

затем добавьте это в свои привязки ключей-User

Он не будет автозакрытия скобок при вводе, а можно просто использовать Sublime встроенный в теге ближе с команда опции . для mac или alt . для windows.

Я настоятельно рекомендую комбинацию Бабель-возвышенное и Эммет. Если вы укажете "JavaScript (Babel)" в качестве синтаксиса, оба пакета будут работать вместе, при этом emmet правильно генерирует "className" и "htmlFor", если это необходимо.

единственным недостатком является то, что расширение не будет работать с вкладкой, но с CTRL+E. Это связано с тем, что вкладка имеет кучу другого использования в JavaScript.

основываясь на ответе Даниэля, я сделал плагин только для этого.

  1. добавьте вышеуказанный репозиторий с Package Control: Add repository
  2. выполнить команду Package Control: Install package
  3. выберите AutoCloseTags

Если у вас установлен babel для sublime, попробуйте открыть свой .js and .JSX файлы и перейдите в меню Вид > синтаксис > открыть все с текущим .. > babel > javascript (babel) для просмотра правильной подсветки синтаксиса и использования CTRL + E для автозаполнения html-тега внутри ur .jsx

как другие предложили: установить Бабель и Эммет !

список аббревиатуры Эммета ( см. демо здесь ) ( и шпаргалка здесь )
Вам даже не нужно вводить угловые скобки-Эммет сделает это, закрывающий тег и многое другое!

использовать Ctrl E в разверните аббревиатуру.

Emmet docs: отлично объясняет сокращения.. а не как "расширить аббревиатуру" -по крайней мере, я не смог найти.

От Возвышенного, Я
- открыл: Preferences -> Package Settings -> Emmet -> Key Bindings - Default
- искали expand_abbreviation
- нашли ctrl+e

счастье - работает как Шарм :-)

Я и рекомендую установить AutoCloseTags, предусмотренных FMcorz и Дэниэл Шэннон.

эта комбинация дает
- автоматическое закрытие (интерпретируемый тег из-за правил вложенности), просто набрав </ , отлично на лету, тогда как, Эммет будет
- разверните "аббревиатуру" до полного открытия и закрытия тегов (и более), нажав Crtl-E . Это отлично подходит для создания каркаса.

Extends the default autocomplete to find matches in all open files.

By default Sublime only considers words found in the current file.

Install

If you have Package Control installed in Sublime just press ctrl+shift+p (Windows, Linux) or cmd+shift+p (OS X) to open the Command Pallete. Start typing 'install' to select 'Package Control: Install Package', then search for AllAutocomplete and select it. That's it.

You can also install this package manually by entering the Packages directory of Sublime Text 2/3 and issuing on a terminal:

Settings

You can disable the additional autocompletion provided by this package for specific source files and even select syntax within files. In the Sublime menu go to Preferences > Package Settings > All Autocomplete > Settings – User.

Example: the following Setting would disable completions when you're editing CSS or JavaScript code, and would not source any completions from Markdown files:

The names provided in this list are matched against the so-called “syntax scope” of the currently autocompleted input. For example, in a CSS file, when you start typing a new CSS class name, the syntax scope is “source.css meta.selector.css”. The names you provide in the config above are partially matched against this scope. This means, you can completely disable All Autocomplete for all CSS code by specifying “css” – or you can disable it only for specific parts, for example, CSS selectors by specifying “selector.css”. Or to disable completion in comments, include “comment” in the list.

Note, if you want to disable it in C source, but not in CSS, add “source.c” in the list (since “c” alone would also match css).

You can find the syntax scope of code at the current cursor position with Control+Shift+P.

LICENSE

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004

Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

Читайте также: