同時用vim開啟.h和.cpp檔案看起來比較方便,於是想寫個vim指令碼來解決一下。可是竟連個簡單的function都出錯。
function myfoo()let filename = getreg("%");
let pos = strridx(filename, ".");
return strpart(filename, 0, pos);
endfunction
問題提示這個:invalid expression: getreg("%");
看了半天也看不出是什麼問題。把getreg換成strlen()這樣簡單的函式也還是出錯,上google搜尋幾乎沒有內容。心中萬分鬱悶啊……
後來,屢試屢敗中終於找到了癥結所在:乙個分號!
原來寫**習慣了,在每行後面寫上乙個分號……可是vim script裡面是沒有分號的。折騰了半天,頭都大了,竟為這個,唉……
ps:用vim開啟.h和.cpp檔案的方法:
map ,v :vs:e %<.cpp
更新:上面是用map的方法實現了這個功能,這得益於%《這個變數,它儲存的是去掉字尾的檔名。如果不知道這個變數,想通過自己編寫的函式來實現這個功能呢?
其實函式並不難寫,只是如何在命令中呼叫函式。直接寫肯定是不可以的。下面先寫改正後的myfoo()函式:
function myfoo()let filename = getreg("%")
let pos = strridx(filename, ".")
let name = strpart(filename, pos)
return name
endfunction
要在命令列中呼叫這個函式,需要用到:execute命令,如:
:execute "e ".myfoo()
假設正在編輯的檔案是fun.h,這個命令就會執行e fun。正是我們想要的效果。好了,下面的語句是使用我們自己寫的函式實現在兩個視窗中分別編輯.h和.cpp
map ,q v:execute "e ".myfoo().".cpp"
乙個查了6個小時的問題的解決過程
giraph中改進 想在edge上面加點屬性,結果發現修改後的值無法生效,pagereank用的edgenovalue類中增加乙個屬性,但是始終讀不出來值,開始以為是使用int導致型別中間沒有進行readfiles或者write的序列化問題,但是edgenovalue根本沒有相關方法,且實際初始化使...
今天遇到乙個很頭疼的問題
在使用idea提交事務的過程中,我遇到了乙個很頭疼的問題 idea總是報錯 lock wait timeout exceeded try restarting transaction 即鎖等待超時。可是我是跟著老師敲得 很頭疼,不知道 出了問題 在機緣巧合下,我發現了報錯的原因 一開始就是關閉自動提...
放棄一切就為給你乙個不確定的未來
qq個性簽名 放棄一切就為給你乙個不確定的未來 你愛過那麼多,我也只是中間的乙個 我愛過那麼多,你會是收尾的那乙個 自找的失望又何必怨誰。自找的痛又何必要喊疼。募然回首 才發現這一路好寂寞。募然回首 才發現邇一直陪著莪。你對我很特別,不一樣的感覺 我對你很特別,很奇妙的感覺。那些年的愛情,都像水一樣...