Chciałem to napisać:
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]
Skończyło się na użyciu LibreCalc, umieszczając różne części w różnych komórkach, dodając litery i cyfry, łącząc wyniki i wklejając całą partię z powrotem do Vima.
Rozumiem, że to, co chciałem napisać, to okropny kod. Obecnie studiuję Python i staram się unikać szukania informacji, które, jak wiem, zostaną omówione w dalszej części kursu ( http://interactivepython.org/ ).
Najszybszym sposobem, jaki o tym wiedziałem, było napisanie czegoś takiego
A = mapping[0] <ESC> hh <CTRL>+<V> BBh y $ o B <ESC> y 1] <CR>
Wiem, że vim jest bardzo potężny (używam go od kilku tygodni, naprawdę mi się podoba).
Czy byłoby możliwe napisanie tego, co chciałem za pomocą komendy vim?
:verbose map y
powinien pokazać, jakie mapowania zaczynają się ody
Ciebie i gdzie zostały ustawione. Ale musisz używaćyy
w trybie normalnym.vim
będzie zwiększaćA
sięB
zCtrl-a
akcji? Mój zdecydowanie nie, i jestem włączony7.4 1-1202
.:set nrformats+=alpha
. Doda wartośćalpha
do opcji'nrformats'
i pozwoliCtrl-a
„zwiększać” znaki alfabetyczne. Jeśli podoba ci się to zachowanie, możesz dodać je do swojego vimrc. W przeciwnym razie możesz dodać go do opcji za pomocą operatora,+=
a następnie usunąć za pomocą operatora-=
(:set nrformats-=alpha
).Wolę rozwiązanie przyrostu wizualnego, którego używał @VanLaser (patrz
:h v_CTRL-A
). Jednak pokażę, że można to zrobić również za pomocą makra.Zacząć od:
Zapisz następujące naciśnięcia klawiszy w wybranym makrze (np.
q
):Spowoduje to zduplikowanie linii, a następnie zwiększenie pierwszego znaku (np.
A
), A następnie zwiększenie części liczbowej. Uruchom to makro 24 razy i gotowe, np24@q
.qq
- rozpocząć nagrywanie do rejestruq
yyp
- zduplikuj linię:set nrformats+=alpha<cr>
-'nrformats
nie maalpha
domyślnie<c-a>
- Za pomocąalpha
możemy teraz zwiększać litery:set nrformats-=alpha<cr>
- usuńalpha
z'nrformats'
<c-a>
- zwiększ następny numerq
- Zatrzymaj nagrywanie24@q
- powtórz makro w rejestrzeq
24 razyAby uzyskać więcej pomocy, zobacz:
źródło
Odpowiedzi już udzielone, nie pomyślałabym, że zajmę się tym tak ładnie. Napisałbym wszystkie litery w jednym wierszu, a następnie wprowadziłem tekst i podział wiersza z podstawieniem wyrażenia (używając numeru linii jako liczby przyrostowej), coś w rodzaju
źródło
Niemal zawsze, gdy robię coś takiego, wybieram użycie
:substitute
makr. Zwłaszcza zdolność do oceny ekspresji zastępującej na początku\=
sprawia, że często jest to możliwe (patrz:h sub-replace-special
).Gdy masz już puste linie (
25i<Enter><Esc>
), możesz użyć polecenianiezbędne sekwencje są generowane przy użyciu bieżącej
'.'
liczby wiersza ( argumentu) zwróconej przez funkcjęline()
i przy użyciu nr2char () do konwersji liczb dziesiętnych na odpowiedniki ASCII (65 = A). Niezbędne łańcuchy są łączone za pomocą.
źródło
Zawsze możesz spróbować użyć systemu operacyjnego ...
źródło