gpt4 book ai didi

vim - 根据特定文件类型更改F5的映射

转载 作者:行者123 更新时间:2023-12-04 20:36:23 28 4
gpt4 key购买 nike

我的 F5 键的当前映射是:

imap <F5> <esc>:w\|!python %<CR>

现在我想要,如果我正在编辑任何 python 文件(如果它也能识别标准 .py 格式以外的文件会更好,如 .pyd 等),那么这个映射按原样工作。但是,如果我编辑一个 Java 文件,它会映射到以下内容:
imap <F5> <esc>:w\|!javac %<CR>

当我编辑任何 .c.cpp文件然后 F5 映射到这个:
imap <F5> <esc>:w\|!make %<CR>

我不知道如何继续。

最佳答案

给出的答案和原始映射都存在问题。首先,对于缓冲区本地映射,有 *map <buffer> .二、用<buffer>你不需要使用 BufEnter事件,可以改为使用 Filetype只推出一次。第三,您有一个错误 (2.)、一个潜在问题 (1.) 和一个可以在原始映射中优化的地方:

  • 你不应该使用 imap ,很容易在添加新映射时意外破坏旧映射
  • !python %一旦文件包含特殊符号(空格、分号、引号、美元等),就会中断
  • 使用 :update而不是 :write在某些情况下避免无用的写入

  • 我的变种:
    autocmd Filetype c,cpp  inoremap <buffer> <F5> <C-o>:update<Bar>execute '!make '.shellescape(expand('%:r'), 1)<CR>
    autocmd Filetype python inoremap <buffer> <F5> <C-o>:update<Bar>execute '!python '.shellescape(@%, 1)<CR>
    autocmd Filetype java inoremap <buffer> <F5> <C-o>:update<Bar>execute '!javac '.shellescape(@%, 1)<CR>

    关于vim - 根据特定文件类型更改F5的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030965/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com