関数ブロックのような C で左中括弧が配置されている場所をフォーマットするのに役立つ Vim スクリプト関数を作成しようとしています。
function! FixLeftBraces()
"Set the cursor to the top of the file
call cursor(1,0)
while search(".\+{",'We') > 0
exe "normal i\n\e"
endwhile
endfunction
この例では、私の目標は、関数と同じ行にある左中かっこを見つけて、次の行に再配置することです。これらのWe
オプションは、ファイルをラップしないようにし、カーソルを検索選択の最後に再配置します。
/
入力モードを使用してVimで検索を実行すると、検索が/.\+{
実行され、ソースコードで期待される行が強調表示されます。
たとえば、次のような C 行:
//is highlighted
int main(){
//is not highlighted
void otherFuncion()
{
ソースを作成FixLeftBraces()
してから使用すると、機能しないようです。実行するだけで何もしません。
検索を変更するとsearch("{",'We')
実行されFixLeftBraces()
ますが、左中括弧ごとに新しい行が追加されます。だから私はなぜFixLeftBraces()
で動作しないのか混乱していsearch(".\+{",'We')
ます。