Thao tác ký tự với mã ascii của họ


8

Hãy nói rằng tôi có

let l:letter = 'A'

Có một hàm lấy l:lettermã ascii và biến nó thành 'B'? Ý tôi là

let l:next_letter = l:letter + 1

Tôi biết là <Ctrl-A>set nf=alpha, nhưng điều đó đòi hỏi phải có con trỏ trên ký tự trong tài liệu và tôi đã tự hỏi liệu có thể làm điều đó với một biến mà không sửa đổi tài liệu.

Đây là những gì tôi đã thử cho đến nay, nhưng như tôi đã nói, nó sửa đổi tài liệu và vị trí con trỏ:

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

1
:help string-functions.
romainl

2
@romainl cảm ơn vì tiền boa nhưng lần sau hãy tính đến việc có thể tôi đã lập trình bằng vimscript trong một vài ngày và vì những gì tôi biết, string-functionskhông phải là một trang hướng dẫn tiêu chuẩn toàn cầu cho mọi ngôn ngữ.
Jcao02

2
Tôi đồng ý với @ Jcao02, kiến ​​thức trước về toàn bộ trang trợ giúp Vim không phải là một yêu cầu của trang web này. Và tôi sẽ phân loại :help string-functionslà hơi tối nghĩa. Ngoài ra, một số ngôn ngữ script như python và perl sử dụng chr()và các ord()hàm để chuyển đổi thành ascii / character. Vì vậy, tìm kiếm với các thuật ngữ này vẫn sẽ không hiển thị nr2charvà các char2nrchức năng. Tôi nghĩ rằng bình luận của @ romainl nên được đăng dưới dạng câu trả lời.
akshay

2
Tôi phải đồng ý với romainl: điều rất quan trọng là phải biết cách điều hướng các trang trợ giúp của vim. Các lớp vỏ đầu tiên của tôi đã dạy tôi man man. :help :helpcũng quan trọng không kém. Nhưng tài liệu vim khá đồ sộ và khó tính trong những năm đầu tiên. Vì vậy, các thủ thuật như :h function^Dcho chúng tôi điểm nhập cảnh. Ở đây nó sẽ là :h functions(/ :h string-functions). Sau đó, thật dễ hiểu những gì đang làm những gì. Ngay cả khi chúng ta đã quen với các ngôn ngữ khác. Chúng ta luôn có thể cung cấp thông tin (đó là những gì chúng ta đang làm hầu hết thời gian), nhưng dạy cách câu cá thì quan trọng hơn - bạn biết câu tục ngữ ...
Luc Hermitte

2
@LucHermitte Tôi sẽ lập luận rằng chỉ đăng bài :help string-functionslà không hiển thị cách câu cá. Nó giống như cho ai đó mồi và không dạy chúng câu cá. Đăng bài làm thế nào họ có thể tìm kiếm các chức năng, là dạy họ câu cá.
akshay

Câu trả lời:



2

Câu hỏi là (nhấn mạnh của tôi):

Có một hàm lấy l:lettermã ascii và biến nó thành 'B' không?

Vì bạn muốn có một hàm , điều đầu tiên cần thử là :help function<C-d>liệt kê mọi thẻ tài liệu có chứa function:

:function                    list-functions               folding-functions
function()                   time-functions               history-functions
functions                    mark-functions               mapping-functions
function-key                 text-functions               various-functions
function_key                 compl-function               numbered-function
function-list                local-function               autoload-functions
:function-verbose            spell-functions              quickfix-functions
function-argument            float-functions              complete-functions
nb-functions                 style-functions              anonymous-function
function-search-undo         ft-ada-functions             Dictionary-function
gui-functions                string-functions             completion-functions
arg-functions                server-functions             window-size-functions
var-functions                cursor-functions             interactive-functions
function-range-example       window-functions             command-line-functions
expr-function                buffer-functions             highlighting-functions
new-functions-5.2            system-functions             curly-braces-function-names
date-functions               syntax-functions             python-Function
dict-functions               xterm-function-keys          :endfunction
file-functions               vt100-function-keys          :delfunction
user-functions               bitwise-function

Ứng cử viên rõ ràng nhất là function-list, hãy thử nó:

There are many functions.  We will mention them here, grouped by what they are
used for.  You can find an alphabetical list here: |functions|.  Use CTRL-] on
the function name to jump to detailed help on it.

String manipulation:                    *string-functions*
    nr2char()       get a character by its ASCII value
    char2nr()       get ASCII value of a character
    [...]

Bạn có thể đã nhận thấy một mẫu, ở đây: các chức năng được nhóm theo chủ đề. Điều này có nghĩa là, nếu bạn cần một chức năng để lọc một danh sách, bạn có thể truy cập trực tiếp vào :help list-functions.

Các trang trợ giúp Vim rất hữu ích; thường :help <keyword><C-d>thì bạn sẽ đi được một quãng đường dài ;-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.