我怎样才能在 vim 中映射执行如下操作的命令:
:command(我在这里写并按回车键)(使用我写的内容执行另一个命令)
或者
:badd my_buffer_name
:b my_buffer_name
我想用“\ff”映射它,它应该像这样工作:\ff my_buffer_name。我该如何映射这样的命令?
答案1
假设您希望映射执行其中一个缓冲区命令,请使用以下命令:
: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>