Як запустити щось вставний режим, отримати введення користувача та повернутися до режиму вставки?


1

У мене є inoremap <C-d> <C-o>:%s/\<<C-r><C-w>\>\C//g<Left><Left>, що чудово працює (більш чи менш емуляція мульти курсору знаходження піднесеного тексту, більш-менш).

Однак він залишає мене в звичайному режимі, чи все-таки я можу його замість цього використовувати функцію введення, щоб повернути мене в режим вставки?


1
1. Не намагайтесь наслідувати попереднього редактора. 2. Не залишайтеся у режимі вставки.
romainl

@romainl Я погоджуюся з обома вашими пунктами, проте я вважаю за краще використовувати його певним чином.
OneOfOne

Відповіді:


2

Після ще копання я знайшов https://stackoverflow.com/questions/15273810/remap-key-and-get-user-input і в кінцевому підсумку прийняв його таким чином:

function! PoorMultiCursor()
    let word = expand('<cword>')
    if strlen(word) > 0
        call inputsave()
        let repl = input('replace "'.word.'" with: ')
        call inputrestore()
        if strlen(repl) > 0
            execute '%s/\<'.word.'\>/'.repl.'/g'
        endif
    endif
endfunction


" sublime text's ctrl+d / alt+f3 (find all)
inoremap <C-d> <C-o>:call PoorMultiCursor()<cr>
nnoremap <C-d> :call PoorMultiCursor()<cr>
vnoremap <C-d> :call PoorMultiCursor()<cr>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.