質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.06%

  • Git

    1014questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

  • Vim

    435questions

    VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

vimの保存時にctagsをアップデートする

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 129

前提・実現したいこと

vimの保存時にtagsファイルをアップデートする処理をしたいです.
ctagsの実行はgitのhooksを使用しています.

環境は,
Mac OS X
iTerm2
fishシェル
を使用しています.

発生している問題・エラーメッセージ

保存時にシェルスクリプトを実行する処理をinit.vimに記述していますが、その実行時にエラーが起きています.

alias: Expected at most 2 args, got 3
- (line 1): Unsupported use of '&&'. In fish, please use 'COMMAND; and COMMAND'.
begin; [ -f ".git/hooks/ctags" ] && .git/hooks/ctags
                                  ^
from sourcing file -
 called on line 60 of file /usr/local/Cellar/fish/2.7.0/share/fish/functions/eval.fish

in function 'eval'
 called on standard input

source: Error while reading file '-'

該当のソースコード

au BufWritePost *.php silent! !eval '[ -f ".git/hooks/ctags" ] and .git/hooks/ctags'

.git/hooks/ctagsに以下のように記述しています.

#!/bin/sh
set -e
PATH="/usr/local/bin:$PATH"
dir="`git rev-parse --git-dir`"
trap 'rm -f "$dir/$$.tags"' EXIT
ctags --tag-relative=yes -R -f "$dir/$$.tags" --fields=+aimlS --languages=php --PHP-kinds=+cdfint-av --exclude=composer.phar --exclude=*Test.php --exclude=*phpunit* --exclude="\.git"
mv "$dir/$$.tags" "$dir/tags"


init.vimに記述したevalで実行する処理で、.git/hooks/ctagsを実行しようとしているのはわかるのですが、
[-f ".git/hooks/ctags"]の部分が何をしているのかよくわかりません.

補足情報(言語/FW/ツール等のバージョンなど)

このサイトを参考にして実装しました.

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

fish には詳しくないですが、エラーを見たところ fish の文法上のエラーが出ているように見えます。
エラーメッセージに従って、

au BufWritePost *.php silent! !eval '[ -f ".git/hooks/ctags" ]; and .git/hooks/ctags'

としてみるとどうでしょう?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/01 23:35

    ```
    ctags: Warning: Unsupported parameter 'n' for --PHP-kinds option
    ctags: Warning: Unsupported parameter 't' for --PHP-kinds option
    ctags: Warning: Unsupported parameter 'a' for --PHP-kinds option
    ```

    という警告は出ますが通るようになりました!

    ちなみにこの警告はどのように修正すればいいか教えていただけませんか?

    キャンセル

  • 2018/01/02 00:23

    .git/hooks/ctagsの--PHP-kindsでn,t,aが対応してないってメッセージですね。お使いのctagsのドキュメントから--PHP-kindsでサポートしてるタグ種別を確認して修正したらいいと思います。

    キャンセル

  • 2018/01/02 16:43

    ありがとうございます!

    見落としていたのですが、
    alias: Expected at most 2 args, got 3
    というメッセージがvim上ではき出されていました

    これはどの部分で出ているエラーなのでしょうか?
    git管理下のファイルを保存した時にのみ出るので、今回質問した部分に対してのメッセージだとは思うのですが...

    キャンセル

  • 2018/01/27 13:41

    気づくのが遅くてすみません。
    私は使ってないのですがおそらくfish-shellのエラーメッセージで
    「引数は最大2個なのに3個も引数書いてるよ」とあります。
    - (line 1): Unsupported use of '&&'. In fish, please use 'COMMAND; and COMMAND'.
    と書いてあるので && を使ってる部分探しましょう。
    そこを COMMAND && COMMAND から COMMAND; and COMMAND に書き直したら良いかと。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Git

    1014questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

  • Vim

    435questions

    VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。