Скопіюйте, видаліть та вставте у Vim


15

Я щойно розпочав роботу з Vim вчора і у мене виникли проблеми з розумінням копіювати та вставляти. Я розумію, щоб скопіювати, я входжу у візуальний режим, виділяю, а потім витягую. Потім я переходжу до рядка, на який я хочу вставити, але частіше, ніж не потрібно видаляти текст із цього рядка. Я роблю це за допомогою xабо dw. Це призводить до того, що моя оригінальна копія буде перезаписана (як xі, dwздається, вирізана). Як мені це обійти?

Щоб прикласти це до прикладу

$foo = $this->foo->property;
thislineuses($foo);

Тож із наведеним вище кодом, який я копіюю $this->foo->property, я хотів би перейти на рядок 2, видалити $fooта вставити. Проблема в тому, що коли я видаляю $fooз другого рядка, це те, що замість цього вставляється $this->foo->property.

Відповіді:


16

Погляньте :h copy-move. Вимкнення або видалення за замовчуванням переходить у місце, яке називається реєстр (реєстр з назвою "). Якщо вам потрібно видалити текст перед вставкою, вам слід уникати перезапису регістра x, як ви виявили. На щастя, ви можете використовувати будь-який інший лист або цифру, щоб назвати інший реєстр.

  • "ayy(перетягніть рядок в реєстр a)
  • x, ddтощо. (видаліть частину тексту з реєстру без назви, ")
  • "ap(вставити текст з реєстру a)

9

Якщо проблема полягає в тому, що вам потрібно просто замінити деякі textна деякі text2, тоді просто виділіть і потягніть text2. Потім виділіть textі натисніть pабо Pвставте text2замість text.

Швидкий подальший посібник для деяких загальних команд vim - це http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know

Насолоджуйтесь!

Редагувати: зауважте, що pвставляє текст після курсору та Pперед курсором.


це приємно, оскільки вам не потрібно думати про проміжні регістри, щоб потрапити в них. це просто працює.
Джон Шонінг

7

Ви можете скопіювати в названий реєстр "ayw, видалити та вставити з названого реєстру "ap.

Однак зазвичай простіше просто змінити порядок, у якому ви робите речі. Вставте пасту, а потім видаліть або видаліть, а потім скопіюйте / вставте.

Можна також видалити в регістр чорних дір "_d. Дивіться /programming//q/54255/70863


3

У вас є різні регістри, за допомогою яких можна утримувати різні текстові значення. Якщо ви хочете зберегти текст у іншому реєстрі, ніж куди буде видалений текст (тобто з використанням xабо d w), скористайтеся наступним:

Щоб зберегти текст у реєстрі a:

  • натисніть " a[команда yank and motion] (зберігає текст до реєстру a)
  • перейдіть туди, куди потрібно вставити текст
  • натиснути " a p(вставити текст з реєстру a)

Ви можете використовувати регістр для кожної літери на клавіатурі та кожного номера. Для видалення тексту ці регістри не використовуються, тому текст залишатиметься в реєстрі, поки ви не закінчите сеанс або вручну не помістите щось інше туди.


0

Не потрібно виділяти всю лінію, якщо ви використовуєте v(на відміну від V) візуальний режим. Якщо це те, про що ви просите.

Якщо ви говорите про зміну скопійованого тексту, то спочатку копіюєте та стираєте частини.

І якщо ви хочете скопіювати, а потім змінити оригінал та вставити, тоді ви можете перейти до іншого реєстру. Мовляв "2y, то модифікуй, то йди в інше місце і "2p.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.