macvim-dev / macvim-dev/macvim

Using Cmd-C multiple times unexpectedly changes editor contents

Open
#1,485 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Vim Script
Stars
7.9k
Forks
691
PR merge metrics
No merged PRs in 30d

Description

Steps to reproduce
  1. Open any file in the GUI via gvim <file> or File > Open
  2. Use your mouse to select some text in the editor (i.e. double-click on a word)
  3. Use Cmd-C to copy the highlighted text
  4. Use Cmd-C again - the line your cursor is on gets cleared (sort of like d$ from the start of the line)
  5. Use Cmd-C again - now <D-c> gets appended onto the line once for every time you type Cmd-C
Expected behaviour

I don't expect Cmd-C to alter the editor contents.

I've been using MacVim since 2017, and I've never run into this before, so I think it's a change from previous behavior. However, I can't figure out what is triggering it or why I've only recently started to see it. I apparently have a habit of sometimes copying the same text multiple times, and I've never before had to worry about lines getting deleted or <D-c> getting inserted into the file I'm editing. I still get the behavior I expect if I'm using vim from a MacOS terminal, which is how I realized I have this habit of using Cmd-C multiple times.

I've tested this behavior with multiple install methods: brew install macvim and brew install --cask macvim, plus manual install from GitHub releases using both MacVim.dmg and MacVim_10.9.dmg. I've also tested with multiple versions of MacVim going back to early 2023. I'm able to reproduce this behavior in all versions I've tried.

Since I've never seen this behavior before, I'm wondering whether something about my combination of hardware and OS might be the root cause. Prior to January of 2024, I was running Ventura on an older Intel Macbook, but now I'm running Sonoma on a new M3 Macbook. Maybe something is slightly different about the way the native Mac copy/paste actions are bound?

Behavior is roughly the same with gvim --clean as with my normal vimrc, although I do normally have set mouse="n" configured (a carryover from my Linux vimrc that has been in there since around 2003).

Version of Vim and architecture

VIM - Vi IMproved 9.1 (2024 Jan 02, compiled Jan 04 2024 03:00:35)

Environment

MacOS 14.3.1 (23D60) on a 16" M3 Macbook Pro from Nov 2023

How MacVim was installed

Originally Homebrew (brew install macvim), but behavior persists with other install methods

Logs and stack traces

No response

Vim configuration where issue is reproducable

Occurs with empty vimrc

Issue has been tested with given configuration
  • by running MacVim.app from GUI macOS interface
  • by running vim/gvim/etc installed by MacVim
  • by running other versions of vim (e.g. /usr/bin/vim)
Issue has been tested with no configuration
  • by running mvim --clean (or gvim, supplied by MacVim distribution)
  • by running vim --clean (in terminal, supplied by MacVim distribution)
  • by running vim --clean (in terminal, other suppliers, e.g. /usr/bin/vim)
Other conditions
  • The both Homebrew packages "vim" and "macvim" are installed

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the repeated Cmd-C behavior in the MacVim GUI using mvim --clean on macOS, comparing it with terminal vim --clean. Trace the MacVim native copy handling and determine why later copies clear or alter the current line; done means repeated Cmd-C leaves editor contents unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, vim
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.