Мой курсор находится в середине абзаца, когда я вдруг решил, что мне нужно скопировать этот абзац:
Поэтому я набираю, vip
чтобы выбрать абзац визуально:
Теперь я нажимаю, cmd+C
чтобы скопировать в буфер обмена (это может отличаться в вашей системе, но не должно относиться к основному вопросу моего поста), что оставляет мой курсор в начале абзаца:
а не желаемая позиция, которая была там, где я был.
Обратите внимание, что та же проблема возникает при дергании выбора не визуально с yip
.
Мне бы хотелось, чтобы поведение по умолчанию было «возвращение в исходное положение курсора» после выполнения действий выделения / копирования, подобных этой. Есть ли конфигурация, которая делает это возможным?
mm "+yap `m
(Обратите внимание, что"+y
откликается в буфер обмена вашей системы)Ответы:
Возможное решение - использовать прыжки:
Перед тем, как дернуть или визуально выбрать, вы можете установить новый прыжок, к которому вы сможете получить доступ после перемещения курсора. Для этого используйте m`.
Затем после того, как ваш курсор переместился из-за янки, используйте ctrloдля возврата назад в список переходов. Также вы можете увидеть список доступных переходов с помощью
:jumps
и перемещаться по этому списку с помощью ctrloиctrliПодводя итог вашего рабочего процесса будет:
Поскольку использование m` устанавливает метку, вы можете перейти к ней с помощью ``вместо ctrlo.
Вы можете прочитать
:h mark-motions
и:h :jumps
для получения дополнительной информации.источник
<leader>'
быть`
, которая работает очень хорошо для меня. (Я использую в<space>
качестве моего лидера.):h 'langmap'
. Я не говорю, что это идеальное решение, но, возможно, оно может быть интересным для вас.noremap ' `
noremap ` '
... Это в моем vimrc и прекрасно работаетВы можете избежать перемещения курсора с помощью:
См
:help range
,:help mark-motions
и:help :y
.источник
:nmap <key> :'{,'}y<CR>
должно делать работу.Если вы только что отредактировали его, самое простое решение - набрать текст, g ;который поместит курсор на последнюю позицию редактирования.
И если вы не редактировали абзац, вы можете выполнить простую операцию замены с тем же символом, на котором вы находитесь (например
h
, вы набираетеrh
), чтобы вызвать «событие» редактирования без какого-либо редактирования.источник
'.
, но может быть очень полезно перемещаться между последними изменениями с помощьюg;
иg,
.g;
которая приведет вас к правильному положению столбца?ВИМ-EasyClip плагин имеет настройки для этого:
Для меня немного стоит установить весь плагин только для этой небольшой функции, поэтому я предпочитаю использовать метки согласно моему комментарию.
источник
Расширяя ответ А.Г., мы можем перейти в нужное место без редактирования. Решение есть gi. Мы достигнем той же позиции, в которой мы были в режиме последней вставки ранее.
Если мы хотим перейти в начало или конец выделенного текста.
Когда вы дергаете выделенный текст, вы также вернетесь в обычный режим и можете сохранить или не сохранить исходное положение курсора.
Возврат к исходному положению после восстановления:
gv чтобы получить предыдущее выделение.
Теперь вы можете переключаться между исходным и текущим местоположением в визуальном режиме с помощью клавиши
oили O.
Номер строки и столбца строки состояния поможет узнать точное положение курсора.
Документация:
источник
vip
когда курсор начинается в середине абзаца.vip
проверки моего редактирования.