簡體   English   中英

Vim autocmd無法使用nnoremap

[英]Vim autocmd not working with nnoremap

我正在嘗試設置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 但是你的問題並沒有就此結束:

  • 這些是全局映射。 有開放的ac文件和映射更改。 打開一個cpp文件,無論你使用什么緩沖區,映射都會改變。請改用nnoremap <buffer> 請參閱:h :map-local
  • 使用autocmd! 沒有一個團體。 autocmd! 將刪除所有先前定義的並添加當前自動命令。 最好用augroup創建一個組。
  • 您可以選擇使用%<而不是%:r
  • 您可能還希望將其推入ftplugin或/ 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

我用這種方式修改它並且它有效:

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM