Pimp My IDE / garage dispatchBack to the garage
October 9, 2026 / editor craft / paste semantics

A rectangle is data, not decoration.

VS Code can now spread a copied column down successive lines at one cursor. The useful part is not the shortcut. It is the editor preserving visible alignment when the destination fights back.

Test paste behavior with ragged lines, tabs, and wide text before you trust the clean demo.
Block paste
ABC
Three rows / one cursor / one visible column

The clipboard finally remembers the shape of the cut.

VS Code's current Basic Editing documentation says that a column selection copied as rows A, B, and C can be pasted at one cursor in spread mode. The rows land on successive destination lines at the same visible column. The editor pads short destination lines or short copied rows with ordinary spaces when alignment needs it.[1]

Set editor.multiCursorPaste to full and the same clipboard content becomes one ordinary multiline insertion. At multiple cursors, VS Code distributes rows only when the row count matches the cursor count. Otherwise it pastes the complete block at each cursor.[1]

The setting chooses a contract. Spread preserves row-to-row alignment. Full preserves the literal multiline payload.

Visible column is the hard part.

A source offset is not always a screen column. VS Code lets each file use spaces or tabs, and its indentation detector can override the default tab size for the open document.[2] That means a paste operation has to respect the destination's layout state. Counting bytes or JavaScript string positions is not enough.

Unicode adds another trap. UAX #29 defines grapheme clusters as a practical approximation of user-perceived characters. One visible character can contain several code points, so splitting text at an arbitrary code-point or code-unit boundary can break the thing the user sees as one character.[3]

Width is contextual too. UAX #11 classifies characters for narrow and wide behavior, but it warns that the East Asian Width property is not an off-the-shelf width algorithm for modern terminal emulators. Font choice, layout, variation sequences, and application tailoring can change what occupies a cell or visual advance.[4]

Use four fixtures before changing the setting.

Start with equal ASCII lines so you can confirm the basic route. Then paste into ragged lines, including one shorter than the target column. Add tabs before and after the cursor. Finish with combining marks, emoji sequences, and wide characters. Compare the rendered result, not a string-length counter.

Run the same clipboard through spread and full. Undo between trials. If your team shares editor settings, save the chosen behavior in the workspace only after the fixture matches the editing job. A table-shaped payload may want spread. A literal code block may want full.

Do not clone the editor with a six-line snippet.

The press below is a teaching tool for plain ASCII. It shows row distribution, padding, destination insertion, and the difference between spread and full. It warns when tabs or non-ASCII text enter the fixture because it does not own the editor's font metrics, grapheme tailoring, or tab model.

That boundary is intentional. The browser demo helps you predict the simple case. Your installed editor, current font, indentation settings, and real file remain the test bench for layout-sensitive text.

Interactive makeover / ordinary paste preview replaced

Stamp the rows onto the bed.

This browser-local press combines source rows, destination text, paste mode, target column, a row map, and copyable output. It handles the ASCII fixture exactly. It flags layout-sensitive input for testing in the real editor.

Load rowsSet columnStamp layoutInspect output

Press controls

Edit the copied block or destination. The output stays unchanged until you stamp again, so draft state cannot masquerade as inspected output.

Paste mode
Stamped output / local teaching fixture

Alignment bed

01abcA
02x B
03123C456
ASCII fixture stampedThree source rows were distributed at column 3. Short destination lines received ordinary spaces.
Sources read / October 9, 2026

Source log

Open the evidence boundary
  1. Visual Studio Code, "Basic editing: Paste a column selection", updated October 7, 2026 and read October 9, 2026. The official documentation defines spread and full behavior, ordinary-space padding, successive-line placement, and the row-count rule for multiple cursors.
  2. Visual Studio Code, "Basic editing: Indentation", read October 9, 2026. The official documentation covers spaces, tab stops, per-file detection, and the status-bar controls that can override global defaults.
  3. Unicode Standard Annex #29, "Unicode Text Segmentation", version 18.0.0, September 1, 2026. It defines grapheme clusters as a best-effort programmatic approximation of user-perceived characters and explains why one visible character may contain several code points.
  4. Unicode Standard Annex #11, "East Asian Width", version 18.0.0, July 31, 2026. It documents narrow, wide, and ambiguous classifications, and warns that the property needs case-specific tailoring in modern terminal emulators.
  5. MDN, "<textarea>: The Textarea element", modified April 24, 2026 and read October 9, 2026. It documents the native multiline control, label association, read-only behavior, and the distinction between initial text content and the live JavaScript value used by this press.

Scope: this press is not VS Code and does not read the clipboard. Its spread calculation is exact for plain ASCII with ordinary spaces. Tabs, non-ASCII text, proportional fonts, extensions, and editor-specific grapheme or width rules require a test in the actual editor.