Как я могу восстановить (скопировать) один символ, на котором находится курсор?


49

Я знаю много способов скопировать вещи:

yiw= дергать в текущем слове
yaw= дергать все слова (включая завершающий пробел)
yy = дергать текущую строку
3yy= дергать три строки, начинающиеся с текущего
yap= дергать весь абзац (включая завершающий перевод строки)

Я также могу удалить или изменить один символ:

x= удалить символ под курсором
r= заменить символ под курсором

Но как в мире вы просто копируете один символ под курсором?

Моя мотивация заключается в том, что я программирую на Perl 6, а некоторые операторы являются символами Unicode. Прямо сейчас я использую код tadzik Perl 6 Config :: INI в качестве отправной точки для пользовательского парсера, например, и мне бы хотелось скопировать только одну французскую кавычку (гипероператор) из этой строки :

my %hash = $<sections>».ast;

Я мог бы использовать двухсимвольную версию гиперсоператора «Техас» >>, но я подумал, что это выглядит лучше и менее двусмысленно, чем >>>:

my %hash = $<sections>>>.ast;

введите описание изображения здесь
введите описание изображения здесь


1
Легко yl
составьте

@VanLaser Хорошая идея! Я думал, что движение не сработает, потому что я хотел только одного персонажа. Но ваше предложение прекрасно работает для ASCII. Опубликуйте это как ответ, и я проголосую. Интересно, что он не работает с этим символом Unicode, но ytXyank til X»), кажется, работает, когда Xперсонаж находится справа.
Кристофер Боттомс

Интересно, это один символ, будь то Unicode, или нет двух символов, скрытых / замененных с помощью concealфункции Vim ?
VanLaser

@VanLaser Похоже на два "персонажа".
Кристофер Боттомс

Кстати, как вы представляете »персонажа?
VanLaser

Ответы:


41

Сочинение операцию копируете с так часто используется «один символ вправо» движение должно работать: yl.

КСТАТИ (чтобы прокомментировать комментарий OP), для меня »можно вытащить таким образом, в gVim или терминал Vim. Возможно (файл) проблема кодировки?


4
У »меня тоже работает янки . Я использую, vyчтобы дергать одного персонажа. Не уверен, почему я использую это, а yl, может быть, у меня когда-то была сознательная причина, но теперь это просто рефлекс.
Jjaderberg

3
Я всегда y<space>думал о том, что это символ дергания под курсором, и я собирался добавить его в качестве ответа, но после проверки справки я понял, <space>и lэто то же самое.
Бретт Й

Это приятно, и, кажется, еще проще попасть, за исключением случаев, когда пространство используется в качестве лидера.
VanLaser

1
@jjaderberg Мне нравится ваш комментарий, пожалуйста, оставьте его как ответ. Спасибо!
Кристофер Боттомс

1
@brettanomyces Мне нравится ваш комментарий, пожалуйста, оставьте его как ответ. Спасибо!
Кристофер Боттомс

14

Обычно я нажимаю vy( visual yank ), иногда xu( delete undo ) тоже. Кроме того, если вы хотите дернуть символ перед курсором, вместо того lvy, чтобы нажимать Xu, я думаю, что это причина, по которой я нажимаю xuдля текущего. :-)

Обратите внимание, что Xuваш курсор переместится на этот символ.


Вы имеете в виду hvy. Я попытался отредактировать его, но, по-видимому, исправление одного символа в команде vim не является значительным изменением, чтобы быть приемлемым.
Шахбаз

9

Самый простой способ, который я знаю, это использовать xдля удаления символа, который также помещает его в буфер, а затем Pдля его возврата. Затем вы можете перемещать курсор и вставлять символ обратно туда, куда вы хотите p( с помощью курсора) или P(до курсора), если вы не меняете буфер.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.