簡體   English   中英

有沒有辦法為Vim添加自定義鍵盤快捷鍵以運行大量命令?

[英]Is there a way to add custom keyboard shortcuts to Vim for running numerous commands?

我遇到了以下問題 - 每當我在Vim中編寫一些C ++代碼並希望編譯並運行它時,我必須:

  1. 退出插入模式
  2. 使用以下命令保存文件:w
  3. :! g++ *.cpp -o programName; ./programName :! g++ *.cpp -o programName; ./programName :! g++ *.cpp -o programName; ./programName以便立即編譯和運行

在輸入最后兩個命令之后,我顯然使用鍵盤上的上箭頭鍵來獲取最后幾個命令,而不是在將來的編譯和運行中一次又一次地寫下它們。

但它對我來說仍然很慢。 所以我想知道是否有某種方法可以創建一個鍵盤快捷鍵,輸入最后兩個命令,甚至可以同時完成所有這三個操作!

您可以使用map將鍵映射到命令。 正常模式的nmap ,插入模式的imap

map <key> command

您提到的cpp編譯應該像:

autocmd FileType cpp nmap <buffer> <F5> :w<bar>!g++ -o %:r % && ./%:r<CR>

將此命令添加到vimrc並編譯並運行當前的cpp文件。

FileType cpp - 直接檢測cpp文件,( 不需要手動正則表達式 )。
nmap - 用於在正常模式下映射鍵。
buffer - 用於當前緩沖區( 在多次拆分的情況下 )。
<F5> - 用於映射“F5”鍵。
執行的命令是:w | !g++ -o %:r % && ./%:r<CR> :w | !g++ -o %:r % && ./%:r<CR>

在上面的命令中, %是文件名( 帶擴展名 ),而%:r是文件名( 沒有擴展名 ),
<CR>代表“回車”按鈕( 回車

加快你的用途

如果你:set autowrite ,Vim會在調用外部命令( :! )之前自動保留源文件。

您可以通過:!!方式重復上一個外部命令:!! (舊的vi技巧),或/然后通過@:重復最后一個Ex命令@:仍然兩個按鍵較少)。

但是,這不會擴展,因此您可能最好使用映射

制圖

由於這是特定於C ++,我建議您在文件類型插件中定義緩沖區本地映射

您可以通過預先添加:autocmd Filetype cpp ...來定義某些文件類型,並將其放入~/.vimrc 但是,當您為各種文件類型添加映射和其他設置時,這會變得難以處理。 最好將命令放入~/.vim/ftplugin/cpp_mappings.vim (這要求你有:filetype plugin on 。)

nnoremap <buffer> <F5> :update<Bar>!g++ -o %:r % && ./%:r<CR>

筆記

  • 你應該使用:noremap ; 它使映射不受重映射和遞歸的影響。
  • :update是以下變體:write ,只有在確實存在未更改的更改時才執行寫入; 所以,它的效率稍高。
  • 對於%:r占位符(使映射獨立於當前文件名),請參閱:help cmdline-special

暫無
暫無

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

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