Как объединить два списка и сделать словарь, используя vim в vscode? - PullRequest
0 голосов
/ 15 апреля 2020

Представьте, что у нас есть два списка в двух файлах, файл 1: contact_list_names.txt как:

Ali
James
Amir
Jones
Sarah

файл 2: contact_phones.txt как:

12344
43211
09876
67890
12309

Я знаю, что мы Можно выбрать все, используя gg, затем v, затем Shift + g, чтобы выбрать все, но когда вы вставляете, нажимая клавишу p, он не вставляет каждый номер перед именем контакта ... Так как вставить цифры перед связанного с ним контактного имени?

1 Ответ

0 голосов
/ 15 апреля 2020

Проблема с использованием буфера обмена для вставки столбцов рядом друг с другом заключается в типе его выделения, см. Здесь:

:echo getregtype('+')

if it returns a lowercase v, it means the type is characterwise.
if it returns an uppercase V, it means the type is linewise.
if it returns ^V{some number}, it means the type is blockwise, and the width of the block is {some number}.

Но мы можем изменить его следующим образом (сделать так, чтобы буфер обмена регистрировался по блокам):

:call setreg('+',@+,'b')

Теперь, если вы попытаетесь вставить новый столбец до или после первого, у вас все получится!

Здесь есть функция для получения содержимого буфера обмена и вставки после текущего столбца

fun! GiveItaNameYouWant()
    call setreg('+',@+,'b')
    normal gg
    execute "normal! A \<esc>"
    execute "normal! \"+p"
endfun

Если вы скопируете эту функцию в буфер обмена и загрузите ее в память, просто запустите:

:@+

Теперь поместите курсор в первый столбец и запустите:

:call GiveItaNameYouWant()

Примечание: я имею в виду только регистр буфера обмена, но вы также можете внести эти изменения в основной регистр выбора "*", в регистр янки "0" и регистр по умолчанию "" "и" az ".

Ссылки: { ссылка }

...