Я хотел написать это:
A = mapping[0]
B = mapping[1]
C = mapping[2]
D = mapping[3]
E = mapping[4]
F = mapping[5]
G = mapping[6]
H = mapping[7]
I = mapping[8]
J = mapping[9]
K = mapping[10]
L = mapping[11]
M = mapping[12]
N = mapping[13]
O = mapping[14]
P = mapping[15]
Q = mapping[16]
R = mapping[17]
S = mapping[18]
T = mapping[19]
U = mapping[20]
V = mapping[21]
W = mapping[22]
X = mapping[23]
Y = mapping[24]
Z = mapping[25]
В итоге я использовал LibreCalc, поместил разные части в разные ячейки, добавил буквы и цифры, объединил результаты и вставил их обратно в Vim.
Я ценю то, что я хотел написать, это ужасный код. Сейчас я изучаю Python и пытаюсь избежать поиска информации, которая, как я знаю, будет рассмотрена позже в курсе, за которым я следую ( http://interactivepython.org/ ).
Самый быстрый способ, которым я знал, сделать это в vim, это напечатать что-то вроде
A = mapping[0] <ESC> hh <CTRL>+<V> BBh y $ o B <ESC> y 1] <CR>
Я знаю, что Vim очень мощный (я использовал его в течение нескольких недель, я действительно наслаждаюсь этим).
Было бы возможно написать то, что я хотел, с какой-нибудь командой vim?
:verbose map y
должен показать вам, какие сопоставления начинаются уy
вас, и где они были установлены. Но вы должны использоватьyy
в обычном режиме.vim
будет увеличиваться ,A
чтобыB
сCtrl-a
действием? Моего точно нет, а я на7.4 1-1202
.:set nrformats+=alpha
. Это добавит значениеalpha
к опции'nrformats'
и должно позволитьCtrl-a
«увеличивать» алфавитные символы. Если вам нравится это поведение, вы можете добавить его в свой vimrc. В противном случае вы можете добавить его в опцию с оператором+=
и впоследствии удалить его с помощью оператора-=
(:set nrformats-=alpha
).Я предпочитаю решение визуального увеличения, которое использовал @VanLaser (см.
:h v_CTRL-A
). Однако я покажу, что это можно сделать и с помощью макроса.Начните с:
Запишите следующие нажатия клавиш в макрос по вашему выбору (например
q
):Это дублирует строку, а затем увеличивает первый символ (например
A
), а затем увеличивает числовую часть. Запустите этот макрос 24 раза, и все готово, например24@q
.qq
- начать запись в регистрq
yyp
- продублируйте строку:set nrformats+=alpha<cr>
-'nrformats
не имеетalpha
по умолчанию<c-a>
- Теперьalpha
мы можем увеличивать буквы:set nrformats-=alpha<cr>
- удалитьalpha
из'nrformats'
<c-a>
- увеличить следующий номерq
- остановить запись24@q
- повторить макрос в реестреq
24 разаДля получения дополнительной помощи см .:
источник
Прекрасные ответы уже предоставлены, я бы не подумал пойти так же хорошо. Я бы набрал все буквы в одной строке, а затем ввел текст и разрыв строки с подстановкой выражения (используя номер строки для добавочного номера), что-то вроде
источник
Почти всегда, когда я делаю что-то подобное, я предпочитаю использовать
:substitute
макросы. Особенно возможность оценки выражения в замене, когда начинается с,\=
часто делает это возможным (см.:h sub-replace-special
).Когда у вас есть пустые строки на месте (
25i<Enter><Esc>
), вы можете использовать командунеобходимые последовательности генерируются с использованием текущего номера строки (
'.'
аргумента), возвращаемого функциейline()
, и использования nr2char () для преобразования десятичных чисел в эквиваленты ASCII (65 = A). Необходимые строки объединяются с использованием.
источник
Вы всегда можете попробовать использовать операционную систему ...
источник