首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未使用nnoremap的Vim autocmd

未使用nnoremap的Vim autocmd
EN

Stack Overflow用户
提问于 2013-08-06 16:42:47
回答 2查看 2.5K关注 0票数 3

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

代码语言:javascript
复制
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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-06 17:33:42

FileType自动命令使用要匹配的文件类型,而不是文件名。您可以使用c和cpp。见:h FileType。然而,你的问题并没有就此结束:

  • 这些是全局映射。在那里打开一个c文件,映射就会改变。打开一个cpp文件,不管您在哪个缓冲区,映射都会发生变化。使用nnoremap <buffer>代替。请参阅:h :map-local
  • 使用没有组的autocmd!autocmd!将删除以前定义的所有内容,并添加当前的自动命令。最好使用augroup创建一个组。
  • 您可以选择使用%<而不是%:r
  • 您还可以考虑将其推入ftplugin或后置/ftplugin变体中。:h ftplugin:h after-directory

合在一起:

代码语言:javascript
复制
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
票数 13
EN

Stack Overflow用户

发布于 2013-08-06 17:18:58

我用这种方式修改了它,它起了作用:

代码语言:javascript
复制
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      nnoremap <leader>cc :!g++ -o %:p:r %<cr>
autocmd! filetype cpp      nnoremap <leader>cr :!g++ -o %:p:r %<cr>:!%:p:r<cr>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18085858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档