TabNine is the all-language autocompleter. It uses machine learning to provide responsive, reliable, and relevant suggestions.
Traditional autocompleters suggest one word at a time.
Why accept this limitation?
Thousands of developers use TabNine because it saves time. You will be able to focus on the code you want to write, rather than the keystrokes required to write it.
TabNine is free to try and there is no time limit for evaluation. Just follow the instructions below:
It's recommended to enter long identifiers by typing the first character of each word. For example:
- To enter
- To enter
If you have a feature request, please create an issue in the TabNine GitHub repository.
How does it work?
TabNine builds an index of your project, reading your .gitignore so that only source files are included. It uses this index to provide useful information to a softmax regression model which ranks candidate completions. For example, TabNine knows how often each pair of consecutive symbols appears in your project, so it knows that
static void is more common than
void static (although they are the same to a C++ compiler).
The candidate completions are then given to a secondary completion engine, which may suggest additional characters for completion, based on similar patterns found elsewhere in your project. This diagram illustrates the role of this completion engine:
Another abstraction layer parameterizes the patterns by the identifiers they contain, allowing TabNine to provide suggestions involving words that it has only seen once, such as
String in this example:
Here is a diagram illustrating this process:
Install TabNine here. TabNine is easy to install and no configuration is necessary.
|Whole project indexing||Yes||Yes|
|No configuration necessary||Yes||Yes|
|~20 millisecond response time||Yes||Yes|
|Sublime Text support||Yes||Yes|
|VS Code support||Yes||Yes|
|Up to 400 KB indexed||Yes||Yes|
|Up to 100 MB indexed||Yes|
All versions of TabNine still work with projects larger than the indexing limit. Files will be added and removed from the index to ensure that the indexed files are as relevant as possible to the files you are editing.