2015-12-24 30 views
0

由於一些個人原因,我想定製我的vim非常詳細。例如,在一個特定的目錄中,比如說「CFxxx」,當我創建一個cpp文件時,我希望它在我的代碼中預先寫入一些模板代碼。但是如果我不在那個目錄下,vim正常運行。什麼是vimrc的語法,如何在vimrc中使用變量和函數?

正如我在別人的vimrc裏發現,他們定義一個函數,並使用文件類型檢測cpp文件,並使用代碼這樣添加模板代碼:

if (expand("%:e") == 'cpp' || expand("%:e") == 'cc') 
    call append(line(".")+6, "#include<bits/stdc++.h>") 
    call append(line(".")+7, "using namespace std;") 
    call append(line(".")+8, "") 
endif 

但是,這不是我想要的弱。我希望它是目錄特定的和文件類型特定的。我發現在vim中有一個函數getcwd()作爲內建函數,可用於獲取目錄,但我不知道如何在vimrc中使用它。這就是要點。

那麼vimrc的語法是什麼?它是一種着名的編程語言嗎?我在哪裏可以學會編寫正確的代碼來定製我的vim並解決上述問題。

+0

要了解vimscript,請查看[SO vim標籤信息頁面](http://stackoverflow.com/tags/vim/info)上給出的非常好的鏈接, – yolenoyer

回答

0

您可以添加到你的vimrc:

augroup cpp_setup 
    autocmd! 
    autocmd FileType cpp source cpp.vim 
augroup END 

,然後創建一個文件cpp.vim裏,在至極你把

" General stuff for all your cpp file 
let b:com = '//' 

inoremap <buffer> <leader>s std:: 
inoremap <buffer> <leader>str std::string 

" specific stuff for your specific dir 
if getcwd() ==# 'diryouwant' 
    "Do what you want here, such has: 
    set wrap 
    call setline('1', "#include <cstdlib>") 
endif 

你會發現那些行的解釋(自動命令,conditionnal,功能)在這個奇妙的教程:learnvimscriptthehardway。長tuto,但完全值得。