1

Как я могу сопоставить команду в Vim, которая делает что-то вроде:

: команда (я пишу здесь и нажимаю ввод) (выполняет другую команду с вещами, которые я написал)

или же

:badd my_buffer_name
:b my_buffer_name

Я хочу сопоставить это с "\ff", и оно должно работать так: \ff my_buffer_name. Как я могу отобразить такие команды?

1 ответ1

2

Предполагая, что вы хотите, чтобы ваше отображение выполнило одну из этих буферных команд, используйте это:

:map \ff :badd 

Убедитесь, что после ":badd" вы добавляете пробел. Увидеть

:help 05.3
:help map.txt

Если вы имели в виду, что ваше отображение должно выполнять обе эти команды, используйте это:

:command -nargs=1 BuffAdd badd <args> <bar> b <args>
:map \ff :BufFAdd 

Снова, включите пробел после ":BufAdd" в отображении. Увидеть

:help 40.2
:help user-commands

Для более сложных задач или обработки аргументов вы можете написать функцию. Увидеть

:help 41.7
:help user-functions

Функция, включающая использование функции input(), может позволить вам набрать \ff и имя буфера, не видя :BufAdd в командной строке, например:

function MyFunc()
    let my_buffer_name = input("Buffer name: ")
    exe 'badd' my_buffer_name
    exe 'b' my_buffer_name
endfunction
map \ff :call MyFunc()<CR>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .