Katakanlah saya punya
let l:letter = 'A'
apakah ada fungsi yang mengambil l:letter
kode ascii dan mengubahnya 'B'
? Maksud saya sesuatu seperti
let l:next_letter = l:letter + 1
Saya tahu ada <Ctrl-A>
dengan set nf=alpha
, tapi itu perlu memiliki kursor di atas karakter dalam dokumen dan saya bertanya-tanya apakah mungkin untuk melakukannya dengan variabel tanpa memodifikasi dokumen.
Inilah yang saya coba sejauh ini, tetapi seperti yang saya katakan, itu memodifikasi dokumen dan posisi kursor:
fu! s:get_next_char(letter)
set nf=octal,hex,alpha
call setline(line('$') + 1, a:letter)
exe ':normal! G^'."\<C-A>"
set nf=octal,hex
let l:next_letter = getline('$')
normal! Gdd
return l:next_letter
endfu
:help string-functions
.string-functions
bukan halaman manual standar global untuk setiap bahasa, serius.:help string-functions
sebagai sedikit tidak jelas. Juga, beberapa bahasa scripting seperti penggunaan python dan perlchr()
danord()
fungsi untuk mengkonversi ke ascii / karakter. Jadi mencari dengan istilah-istilah ini masih tidak akan munculnr2char
danchar2nr
berfungsi dengan baik. Saya pikir komentar @ romainl seharusnya diposting sebagai jawaban.man man
.:help :help
sama pentingnya. Tetapi dokumentasi vim cukup besar dan sulit untuk ditemukan pada tahun-tahun pertama. Dengan demikian trik seperti:h function^D
memberi kami poin entri. Ini dia:h functions
(/:h string-functions
). Maka, mudah untuk memahami apa yang melakukan apa. Bahkan jika kita terbiasa dengan bahasa lain. Kami selalu dapat memberikan informasi (itu yang paling sering kami lakukan), tetapi mengajarkan cara memancing itu lebih penting - Anda tahu pepatahnya ...:help string-functions
tidak menunjukkan cara memancing. Ini lebih seperti memberi seseorang umpan dan tidak mengajari mereka memancing sama sekali. Memposting bagaimana mereka dapat mencari fungsi, mengajarkan mereka untuk memancing.Jawaban:
Sangat mudah dilakukan dengan
:help nr2char()
dan:help char2nr()
.Contoh penggunaan:
:let b_char = nr2char(char2nr('A') + 1)
Kemudian,
:echo b_char
akan mengembalikan 'B'sumber
Pertanyaannya adalah (beri penekanan pada saya):
Karena Anda menginginkan fungsi , hal pertama yang harus dicoba adalah
:help function<C-d>
yang mencantumkan setiap tag dokumentasi yang berisifunction
:Kandidat yang paling jelas adalah
function-list
, mari kita coba:Anda mungkin telah memperhatikan sebuah pola, di sini: fungsi dikelompokkan berdasarkan tema. Ini berarti bahwa, jika Anda memerlukan fungsi untuk memfilter daftar, Anda dapat langsung menuju
:help list-functions
.Halaman bantuan Vim sangat berguna; sering kali
:help <keyword><C-d>
akan membuat Anda jauh ;-)sumber