Мне нравится решение AlexRus (мне нравятся макросы Vim).
Но я думаю, что более реалистичной была бы вставка пар ключ / значение из некоторого другого приложения / документа:
betty bravo
cindy charlie
deana delta
и выполнить несколько преобразований в каждой строке.
РЕШЕНИЕ 1
Мы могли бы выбрать все три строки с помощью <S-v>jj
или другим способом и применитьсерия поиска / замены по выделению:
:'<,'>s/^/$mynames['
gv to reselect
:'<,'>s/ /'] = '
gv to reselect
:'<,'>s/$/';
Вся последовательность редактирования выглядит так:
<S-v>jj:s/^/$mynames['<CR>gv:s/ /'] = '<CR>gv:s/$/';<CR>
РЕШЕНИЕ 2
Мыможно применить один поиск / замену
:'<,'>s/^\(.*\) \(.*\)$/$myname['\1'] = '\2';
, где часть поиска изолирует начало строки (^
), пробел между словами (
) и конец строки (* 1028)*) фактически сопоставляя текст между ними и заменяемой частью, заменяет всю строку на $myname['
+ первое совпадение (\1
) + '] = '
+ второе совпадение (\2
) + ';
.
Я плохо разбираюсь в регулярных выражениях, поэтому мне пришлось проверять свои записи, чтобы собрать их вместе, но я не сомневаюсь, маПользователи Vim могут набирать такие команды за один раз.Я когда-нибудь это сделаю.
Вся последовательность редактирования выглядит следующим образом:
<S-v>jj:s/^\(.*\) \(.*\)$/$myname['\1'] = '\2';<CR>
РЕШЕНИЕ 3
При той же настройке мы можем ввестиВ режиме VISUAL-BLOCK в начале первой строки с помощью <C-v>
, пройдите как можно ниже вниз и введите I$myaccess['<Esc>
, чтобы получить:
$mynames['betty bravo
$mynames['cindy charlie
$mynames['deana delta
переместите курсор напробел между словами с помощью f<Space>
, снова нажмите <C-v>
, разверните выделение до конца и введите c'] = '<Esc>
, чтобы получить:
$mynames['betty'] = 'bravo
$mynames['cindy'] = 'charlie
$mynames['deana'] = 'delta
, затем перейдите в конец строки с помощью $
,нажмите <C-v>
еще раз, выберите то, что вы хотите снова и введите A';<Esc>
для последнего касания.
Вся последовательность редактирования выглядит следующим образом:
<C-v>jjI$myaccess['<Esc>f <C-v>jjc'] = '<Esc>$<C-v>jjA';<Esc>