gpt4 book ai didi

Vim autocmd 不适用于 nnoremap

转载 作者:行者123 更新时间:2023-12-04 18:32:45 30 4
gpt4 key购买 nike

我正在尝试设置 vim 以在编辑器中编译和运行 c 和 c++ 程序,但这些似乎不起作用:

autocmd! filetype *.c        nnoremap <leader>cc :!gcc -o %:p:r %<cr>
autocmd! filetype *.c nnoremap <leader>cr :!gcc -o %:p:r %<cr>:!%:p:r<cr>
autocmd! filetype *.cpp *.cc nnoremap <leader>cc :!g++ -o %:p:r %<cr>
autocmd! filetype *.cpp *.cc nnoremap <leader>cr :!g++ -o %:p:r %<cr>:!%:p:r<cr>

最佳答案

FileType 自动命令使用文件类型而不是文件名来匹配。您可以改为使用 c 和 cpp。见 :h FileType .然而,您的问题并不止于此:

  • 这些是全局映射。在那里打开一个 c 文件并更改映射。打开一个 cpp 文件,无论你在什么缓冲区中,映射都会改变。使用 nnoremap <buffer>反而。见 :h :map-local
  • 使用 autocmd!没有组。 autocmd!将删除所有先前定义的并添加到当前自动命令中。最好用 augroup 创建一个组.
  • 您可以选择使用 %<而不是 %:r .
  • 您可能还想考虑将其推送到 ftplugin 或 after/ftplugin 变体中。 :h ftplugin:h after-directory

  • 全部一起:
    augroup CBuild
    autocmd!
    autocmd filetype c nnoremap <buffer> <leader>cc :!gcc -o %:p:r %<cr>
    autocmd filetype c nnoremap <buffer> <leader>cr :!gcc -o %:p:r %<cr>:!%:p:r<cr>
    autocmd filetype cpp nnoremap <buffer> <leader>cc :!g++ -o %:p:r %<cr>
    autocmd filetype cpp nnoremap <buffer> <leader>cr :!g++ -o %:p:r %<cr>:!%:p:r<cr>
    augroup END

    关于Vim autocmd 不适用于 nnoremap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085858/

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