Saya ingin menulis ini:
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]
Saya akhirnya menggunakan LibreCalc, menempatkan bagian-bagian yang berbeda di sel yang berbeda, menambahkan huruf dan angka, menggabungkan hasil dan menempelkan lot kembali ke Vim.
Saya menghargai bahwa apa yang ingin saya tulis adalah kode yang buruk. Saya sedang mempelajari Python saat ini dan telah berusaha untuk menghindari mencari informasi sendiri yang saya tahu akan dibahas nanti dalam kursus yang saya ikuti ( http://interactivepython.org/ ).
Cara tercepat yang saya tahu untuk melakukan ini di vim adalah mengetikkan sesuatu seperti
A = mapping[0] <ESC> hh <CTRL>+<V> BBh y $ o B <ESC> y 1] <CR>
Saya tahu vim sangat kuat (saya telah menggunakannya selama beberapa minggu, saya benar-benar menikmatinya).
Apakah mungkin untuk menulis apa yang saya inginkan dengan perintah vim?
:verbose map y
harus menunjukkan kepada Anda pemetaan apa yang dimulai dengan yangy
Anda miliki, dan di mana mereka ditetapkan. Tetapi Anda harus menggunakanyy
dalam mode normal.vim
akan kenaikanA
untukB
denganCtrl-a
tindakan? Punyaku pasti tidak, dan aku aktif7.4 1-1202
.:set nrformats+=alpha
. Ini akan menambah nilaialpha
ke opsi'nrformats'
dan harus memungkinkanCtrl-a
untuk "menambah" karakter alfabet. Jika Anda menyukai perilaku ini, Anda bisa menambahkannya ke vimrc Anda. Kalau tidak, Anda bisa menambahkannya ke opsi dengan operator+=
dan menghapusnya kemudian dengan operator-=
(:set nrformats-=alpha
).Saya lebih suka solusi peningkatan visual yang @VanLaser gunakan (Lihat
:h v_CTRL-A
). Namun saya akan menunjukkan ini bisa dilakukan melalui makro juga.Dimulai dari:
Rekam penekanan tombol berikut ke dalam makro pilihan Anda (misalnya
q
):Ini akan menduplikasi baris dan kemudian menambah karakter pertama (misalnya
A
) dan kemudian menambah porsi nomor. Jalankan makro ini 24 kali dan Anda selesai, mis24@q
.qq
- Mulai merekam ke registerq
yyp
- Gandakan garis:set nrformats+=alpha<cr>
-'nrformats
tidak memilikialpha
secara default<c-a>
- Denganalpha
kita sekarang dapat menambahkan huruf:set nrformats-=alpha<cr>
- hapusalpha
dari'nrformats'
<c-a>
- Menambah nomor berikutnyaq
- berhenti merekam24@q
- memutar ulang makro dalam registerq
24 kaliUntuk bantuan lebih lanjut lihat:
sumber
Jawaban bagus sudah disediakan, saya tidak akan berpikir untuk melakukannya dengan baik. Saya akan mengetik semua huruf pada satu baris dan kemudian memperkenalkan teks dan baris dengan substitusi ekspresi (menggunakan nomor baris untuk nomor tambahan), sesuatu seperti
sumber
Hampir selalu ketika melakukan sesuatu seperti ini, saya memilih untuk menggunakan
:substitute
lebih dari makro. Khususnya kemampuan untuk mengevaluasi ekspresi sebagai pengganti ketika memulai dengan\=
membuatnya sering dimungkinkan (lihat:h sub-replace-special
).Setelah Anda memiliki baris kosong di tempat (
25i<Enter><Esc>
), Anda dapat menggunakan perintahurutan yang diperlukan dihasilkan menggunakan
'.'
nomor baris ( argumen) saat ini yang dikembalikan oleh fungsiline()
, dan menggunakan nr2char () untuk mengubah angka desimal menjadi setara ASCII (65 = A). String yang diperlukan digabungkan menggunakan.
sumber
Anda selalu dapat mencoba menggunakan sistem operasi ...
sumber