Quería escribir esto:
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]
Terminé usando LibreCalc, colocando las diferentes partes en diferentes celdas, agregando las letras y los números, concatenando los resultados y pegando el lote nuevamente en Vim.
Aprecio que lo que quería escribir es un código horrible. Estoy estudiando Python en este momento y he estado tratando de evitar ir a buscar información que sé que se cubrirá más adelante en el curso que estoy siguiendo ( http://interactivepython.org/ ).
La forma más rápida que supe de hacer esto en vim fue escribir algo como
A = mapping[0] <ESC> hh <CTRL>+<V> BBh y $ o B <ESC> y 1] <CR>
Sé que vim es muy poderoso (lo he estado usando durante un par de semanas, realmente lo estoy disfrutando).
¿Hubiera sido posible escribir lo que quería con algún comando vim?

:verbose map ydebería mostrarle qué asignaciones que comienzan conyusted y dónde se establecieron. Pero tienes que usaryyen modo normal.vimse incrementaráAaBlaCtrl-aacción? El mío definitivamente no, y estoy en7.4 1-1202.:set nrformats+=alpha. Agregará el valoralphaa la opción'nrformats'y debería permitirCtrl-a"incrementar" los caracteres alfabéticos. Si le gusta este comportamiento, puede agregarlo a su vimrc. De lo contrario, puede agregarlo a la opción con el operador+=y eliminarlo luego con el operador-=(:set nrformats-=alpha).Prefiero la solución de incremento visual que @VanLaser usó (Ver
:h v_CTRL-A). Sin embargo, mostraré que esto también se puede hacer a través de macro.Empezar con:
Registre las siguientes pulsaciones de teclas en una macro de su elección (por ejemplo
q):Esto duplicará la línea y luego incrementará el primer carácter (p
A. Ej. ) Y luego incrementará la parte del número. Ejecute esta macro 24 veces y listo, por ejemplo24@q.qq- comenzar a grabar en el registroqyyp- duplicar la línea:set nrformats+=alpha<cr>-'nrformatsno tienealphapor defecto<c-a>- Conalphaahora podemos incrementar letras:set nrformats-=alpha<cr>- eliminaralphade'nrformats'<c-a>- incremente el siguiente númeroq- para de grabar24@q- reproducir macro en el registroq24 vecesPara más ayuda ver:
fuente
Buenas respuestas ya proporcionadas, no habría pensado en hacerlo tan bien. Hubiera escrito todas las letras en una sola línea y luego hubiera introducido texto y salto de línea con una sustitución de expresión (usando el número de línea para el número incremental), algo así como
fuente
Casi siempre cuando hago algo como esto, elijo usar
:substitutesobre macros. Especialmente la capacidad de evaluar la expresión en reemplazo cuando se comienza lo\=hace a menudo posible (ver:h sub-replace-special).Una vez que tenga líneas vacías en su lugar (
25i<Enter><Esc>), puede usar el comandolas secuencias necesarias se generan usando el número de línea (
'.'argumento) actual devuelto por la funciónline(), y usando nr2char () para convertir números decimales a equivalentes ASCII (65 = A). Las cadenas necesarias se concatenan usando.fuente
Siempre puede intentar usar el sistema operativo ...
fuente