5

在 Visual Studio 2010 SDK 中有 SnapshotSpans 和 VirtualSnapshotSpans。根据MSDN,不同的是Virtual Span有Virtual Spaces,其他的没有。

究竟什么是虚拟空间?

供参考:http: //msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.virtualsnapshotspan.aspx

4

1 回答 1

6

你可以在这里找到解释:

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.virtualsnapshotpoint%28v=vs.100%29.aspx

虚拟空格是行尾的“额外”空格,不会增加行的长度。您可以在 Visual Studio 中启用或禁用虚拟空间。当虚拟空间被禁用时,在行尾按下右箭头键会导致插入符号移动到下一行的开头。启用虚拟空格后,在行尾按右箭头键会导致插入符号在同一行上向前移动。

即使工具 -> 选项 -> 文本编辑器 -> 所有语言 -> 常规下的“启用虚拟空间”选项被禁用,在编写缩进文本或代码时也可以插入虚拟空间。

如果在缩进行的末尾键入 enter,Visual Studio 会在新行的开头添加虚拟空格。这些空格是“虚拟的”,因为它们不是由用户输入的,并且不会保存在文件中,除非您在虚拟空格之后输入一些内容。

这会影响插入符号的位置:在缩进行的末尾按 enter 后,“BufferPosition”和“VirtualBufferPosition”的 CaretPosition 属性将不同。BufferPosition 指向新行中的第 0 列,而 VirtualBufferPosition 指向插入符号在视觉上呈现的位置。

于 2012-08-03T11:11:09.660 回答