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 y
debería mostrarle qué asignaciones que comienzan cony
usted y dónde se establecieron. Pero tienes que usaryy
en modo normal.vim
se incrementaráA
aB
laCtrl-a
acción? El mío definitivamente no, y estoy en7.4 1-1202
.:set nrformats+=alpha
. Agregará el valoralpha
a 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 registroq
yyp
- duplicar la línea:set nrformats+=alpha<cr>
-'nrformats
no tienealpha
por defecto<c-a>
- Conalpha
ahora podemos incrementar letras:set nrformats-=alpha<cr>
- eliminaralpha
de'nrformats'
<c-a>
- incremente el siguiente númeroq
- para de grabar24@q
- reproducir macro en el registroq
24 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
:substitute
sobre 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