【译】强大的文件差异比较

很多人在终端模式下使用 vimdiff 来查看和处理 diff 差异,此外,还有很多专业的文件差异比较 diff 工具。然而,vimdiff 于我来说已然足够。

低效的外部 diff

严格来说,Vim 的 diff 模式也有不足。基本上,它需要写入临时文件,切到 shell 运行 diff 命令,再将结果解析出来。你可以想象,这个过程会很慢,一点也不高效。

除此之外,它还需要一个二进制 diff 程序以创建 ed 风格的 diff 。所以,想要使用 git-diff 命令(被认为是最好的 diff 库,可选择不同的 diff 算法)也是不行的。这导致某些 vimscript 插件 的诞生,该插件在内部将 unified diff 转换为 ed diff。当然,这将增加额外的性能损失。

Read more…

【译】Atom 新的并发友好型 buffer 实现

Atom 的一些功能依赖于缓冲区(buffer)内容基础上的运算(可能会花费很长时间),但是直到最近,还只能从运行在主线程上的 JavaScript 访问缓冲区的文本。这使得无法在所有情况下保证 Atom 的响应能力,尤其是在编辑较大文件时。

这种情况随着 Atom 1.19 的发布而有所改变,该版本通过使用 C++ 实现的文本存储极大地提高了并行处理能力。这项新设计为性能和可伸缩性提供了诸多好处,其中主要优点之一是 worker 线程可以读取之前缓冲区的快照(snapshot),而不会阻塞主线程上的写入。在这篇文章中,我们将深入介绍 Atom 的文本存储新方法,然后探讨由此带来的首批优化。

Read more…

【译】重新实现 Text Buffer

Visual Studio Code 1.21 发行版包含一个全新的 text buffer(文本缓冲区)实现,无论在速度还是在内存使用方面,该实现都更加出色。在本文中,我想讲一下我们是如何选择/设计数据结构和算法以实现这些提升的。

Read more…

在浏览器中运行 Vim 编辑器

有人将 Vim 编辑器移植到了 WebAssembly (Wasm) 格式: vim.wasm: Vim Ported to WebAssemblyWasm 是一种底层的二进制指令格式,理论上能实现接近 C/C++/Rust 等编译性语言的执行速度,目前已经在主流浏览器 Chrome/Safari/Firefox/Edge 中得到支持。所以现在,你可以在浏览器上体验原汁原味的 Vim 了!

vim.wasm on chrome

Read more…

Vim Cheatsheet
Contents © 2020 ashfinal - Powered by Nikola