Я не знаю, быстр ли этот или нет, но по крайней мере это просто.
Просто, преобразуйте его сначала в набор и с другой стороны в список
def unique(container):
return list(set(container))
First of all it seems CTRL-V is mapped to something because normally pasting in VIM is not done using CTRL-V (CTRL-V is visual block).
Second the behaviour you are seeing is standard vi[m] behaviour, if you yank one or more entire lines, pasting will always result in one or more lines above or below the current line.
I do not know of any builtin way to achieve what you are trying to do. But you could always remap CTRL-V to something that does do what you want, i.e.
:map <C-V> i<CR><Esc>"*P
After that pasting multiple lines will be between the characters your cursor was at, but this remapping probably is not what you want in other cases.
EDIT
OK, I found another way.
When in insert mode, type
CTRL-R *
this will paste the contents of the clipboard buffer at the location the cursor is at. (You can also use this to paste the contents of other buffers)
Используйте ярлыки p
и P
(вставьте после и перед курсором соответственно). Добавьте "*
, чтобы указать содержимое системного реестра (буфер обмена Windows, в вашем случае), или " +
(для UNIX).
Итак, вы можете использовать:
] "* p
вставить перед курсором " * P
вставить после курсора "* y
copy (визуальная область, или занимает
постфикс, сообщающий Vim, "что" копировать) "* d
вырезать (визуальная область или
postfix) и т. д.
Если вы хотите удалить символы новой строки из регистра перед вставкой из него, вы можете использовать регистр выражения "=
:
:map <C-v> "=substitute(@*, "\n", " ", "g")<CR>p
:set paste
перед тем, как вставить что-либо в буфер
:set nopaste
для восстановления настроек форматирования
Чтобы вставить в gVim из буфера обмена Windows в позиции курсора, используйте
"+gP
Не забудьте двойные кавычки.