0

我知道 Notepad++ 使用 Gap Buffer,而 XI 编辑器使用 Rope。但我不知道 Visual Studio Code 背后的数据结构。

你知道 Visual Studio Code 中使用了哪种数据结构吗?

4

2 回答 2

1

根据Visual Studio 网站上关于如何为 Visual Studio Code 1.21 实现文本缓冲区的文章,文本缓冲区显然由一个片段表表示- 一种将初始文本存储在一个节点中的数据结构,然后在其他节点。

然后,他们通过以下方式改进了性能:

  • 缓存行首,以便更容易在文本缓冲区中跳转
  • 通过将初始文本存储为缓冲区列表,确保初始文本不会变得太大,以至于他们的 Javascript 引擎 (V8) 无法处理
  • 重新处理行首缓存以使用红黑树以获得更好的性能

得到作者所说的“带有红黑树的多缓冲块表,针对线模型进行了优化”,然后立即缩短为“块树”。

于 2020-12-30T11:03:20.137 回答
0

~$ ls ~/.vscode/extensions/donjayamanne.python-0.7.0/pythonFiles/ completion.py isort PythonTools release sortImports.py completionServer.py preview refactor.py rope ~$ 对我来说就像绳子。

于 2017-10-19T10:21:18.190 回答