autocmdの syntaxの改造にトライ (syntax/vim.vim)
Lingr vim-users.jpでも相談させてもらったのですが、
au BufNewFile,BufRead *.html so <sfile>:h/html.vim
に対して、
au myvimrc BufNewFile,BufRead *.html so <sfile>:h/html.vim
ってやると、「BufNewFile,BufRead」がハイライトされてない。。。
これをどうにかしたい。っているのが今回の内容。
※Vim初心者です。
Syntaxを調べる
syntax/vim.vimをなんとかしたい vim-jp/issues #155
より、
:echo synIDattr(synID(line("."), col("."), 1), "name")
にて確認するとありましたので、それで確認してみます。
au | BufNewFile,BufRead | *.html | so | |
vimAutoCmd | vimAutoEvent(List) | vimAutoCmdSpace | vimAutoCmdSfxList | vimCommand |
では、次はどうかというと。
au | myvimrc | BufNewFile,BufRead | * | . | html | so | |
vimAutoCmd | vimAutoEventList | vimAutoCmdSpace | vimAutoCmdSfxList | vimOper | vimVar | vimCommand |
となってました。
ってことは、単純に vimAutoCmdの次に来る keyword に [group] がないってことか。
:au[tocmd] [group] {event} {pat} [nested] {cmd}
" Autocmd {{{2 " ======= syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList syn match vimAutoCmdSfxList contained "\S*" syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
ふむ。確かに [group] 考慮が無さそう。
どうやればいいんだろうか???
改造する。
@@ -304,10 +304,11 @@ " Autocmd {{{2 " ======= +syn match vimAutoCmdGroup contained "\a\+" contains=vimAutoEventList skipwhite nextgroup=vimAutoEventList syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList syn match vimAutoCmdSfxList contained "\S*" -syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList +syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoCmdGroup " Echo and Execute -- prefer strings! {{{2 " ===============
確かにこうすると
au myvimrc BufNewFile,BufRead *.html so <sfile>:h/html.vim
au | myvimrc | BufNewFile,BufRead | *.html | so | |
vimAutoCmd | vimAutoEvent | vimAutoEvent | vimAutoCmdSpace | vimAutoCmdSfxList | vimCommand |
ってなるので、ハイライトされるんだけど。。。
au BufNewFile,BufRead *.html so <sfile>:h/html.vim
au | BufNewFile,BufRead | * | . | html | so |
vimAutoCmd | vimAutoEvent | vimOper | vimVar | vimCommand |
となってしまう。(´ε`;)ウーン…
確かにそうなんだけど・・・書き方分からない
ファイルに保存する。(:sav[eas])
早くVimmerになりたい!
ようやく手元に話題の「実践Vim 思考のスピードで編集しよう!」が届きました!
これでVim力をレベルアップをしたいと思います。
この記事は Vim Advent Calendar 2012の278日目の記事です。
277日目は @manga_osyo さんの「Vim で非同期で Clang を使用したコード補完を行う」でした。
今回の記事は至って単純な「ファイルに保存する」についてです。
保存する。(:w[rite])
ググると大体「:w(rite)」しか出てきません。
helpを見るとこんな感じ。
*:w* *:write* *E502* *E503* *E504* *E505* *E512* *E514* *E667* *E796* :w[rite] [++opt] バッファ全体をカレントファイルに書き込む。これはファイ ルに対する変更点を保存するときの普通の方法である。 オプション 'readonly' がオンであるかファイルに書き込め ない理由が何かあるときには実行に失敗する。
しかし、Vimでは、もう一つあります。
せっかくあるのに、ググっても「:w」しか出てこないと寂しいので、今回紹介します。
保存する。(:sav[eas])
- help「:h sav」より
*:sav* *:saveas* :sav[eas][!] [++opt] {file} カレントファイルをファイル名 {file} として保存し、カレ ントバッファのファイル名を {file} に変える。それまでの カレントファイルの名前はオルタネートファイルの名前にな る。既存のファイルを上書きするには [!] が必要になる。 'filetype' が空の場合、保存の前に新しいファイル名に対 してファイルタイプ検出が行われる。 保存が成功すると 'readonly' がオフになる。 {Vi にはない}
どんな場面で使ってるか?
既存ファイルを残しつつ、新規ファイルに保存し、更に編集した場合。
うーん。ちょっと意味が分からないですね。
具体的には、今週の週報「syuhou_20130903.txt」を書かないといけないとします。
先週の週報「syuhou_20130827.txt」があります。
この先週の週報を元に書きなおしたい場合に使ってます。
$> vim syuhou_20130827.txt
※Vimmerの方々は、一度Vimを起動すると閉じないと聞いたので、
正確には、
:e syuhou_20130827.txt
ですね。
ここで、
:w syuhou_20130903.txt
だと、カレントバッファは「syuhou_20130827.txt」のままです。
しかし、
:sav syuhou_20130903.txt
だと、カレントバッファが「syuhou_20130903.txt」になるので、
更なる追記も楽ちんです。
とまぁーこんな感じで使ってます。
自分のディレクトリに Vim Girlとの夏の思い出 が無かった・・・
誰かください(T_T)
次回は @manga_osyo さんです。
VAC2012とvim-anzuとvim-airline
VAC2012
VAC(Vim Advent Calender)2012 はまだまだ続いています。
凄いです。Vimmerにクリスマスはなかった。
しかし、Vim Girlがいます。
Vim Girlがいます。(かわいい)
毎日素晴らしい記事が投稿されています。
感謝!感謝!
vim-anzu
VAC(Vim Advent Calender)2012 - 261日目
anzu.vim の動作を高速化した。それと Patch 7.3.867 で追加された便利なアレ
なぜかスルーしていた anzu.vim
早速入れてみました。
vim-airline
VAC(Vim Advent Calender)2012 - 263日目
vim-airline に乗り換える5つの理由
私は、vim-powerline (vim-powerlineのほう)を使っていましたが、
この記事で vim-airlineに乗り換えることに決めました。
設定
vim-airline内に vim-anzuの結果を反映させることにしました。
" ------------------------------------------------------------------- " vim-anzu関連 {{{ " " キーマップ設定 " nmap n <Plug>(anzu-n) " nmap N <Plug>(anzu-N) nmap n nzz<Plug>(anzu-update-search-status) nmap N Nzz<Plug>(anzu-update-search-status) nmap * <Plug>(anzu-star) nmap # <Plug>(anzu-sharp) " ESC2回押しで検索ハイライトを消去 nmap <silent> <ESC><ESC> :<C-u>nohlsearch<CR><Plug>(anzu-clear-search-status) " format = (該当数/全体数) let g:anzu_status_format = "(%i/%l)" "}}} " ------------------------------------------------------------------- " vim-airline関連 {{{ " " vim-anzuの表示を statuslineに let g:airline_section_c = '%F %{anzu#search_status()}' " whitespace無効 let g:airline#extensions#whitespace#enabled = 0 "}}}
こんな感じです。
unite-tig更新(折り畳み表示)
ModelSim-Altera Starter Edition 13.0(10.1d)インストール
アルテラ、Quartus II 開発ソフトウェア v13.0 をリリース
ということで、Ubuntu 12.04 LTS(32bit)に ModelSim-ASE 13.0(10.1d)をインストールしました。
※現在だと 13.0sp1(10.1d)が最新です。
ダウンロード
今回よりダウンロードが変わったみたいですね。
私はダウンロード・マネージャーを使ってダウンロードしました。
私は Macですが大丈夫でした。
ファイル名:ModelSimSetup-13.0.0.156.run
インストール
インストール方法も変わりました。
$> ModelSimSetup-13.0.0.156.run
で、GUIが立ち上がりますのであとはポチポチと。
実行
$> make vlib work
vlog sample.sv
Model Technology ModelSim ALTERA vlog 10.1d Compiler 2012.11 Nov 2 2012
-- Compiling module testbench
今回から、リンクを張っていた作業が要らなくなってました!
かなりダウンロード含めて便利になりましたね。