頭疼了乙個小時就為這個

2022-08-30 19:06:10 字數 1081 閱讀 6011

同時用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個性簽名 放棄一切就為給你乙個不確定的未來 你愛過那麼多,我也只是中間的乙個 我愛過那麼多,你會是收尾的那乙個 自找的失望又何必怨誰。自找的痛又何必要喊疼。募然回首 才發現這一路好寂寞。募然回首 才發現邇一直陪著莪。你對我很特別,不一樣的感覺 我對你很特別,很奇妙的感覺。那些年的愛情,都像水一樣...