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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Vim

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

Q&A

解決済

1回答

1476閲覧

vimでmatchitが機能しません

HorinoTora

総合スコア10

Vim

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

0グッド

0クリップ

投稿2021/06/10 00:08

前提・実現したいこと

ubuntu20.04上でvim8.2.2311を使用しています。

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

htmlのファイルを編集していますが、<tag>..</tag>の % keyによる
移動が機能しません。以前は動いていましたが。

試したこと

:scriptnames でプラグインの読み込みをみると、
13: /usr/share/vim/vim82/macros/matchit.vim
14: /usr/share/vim/vim82/pack/dist/opt/matchit/plugin/matchit.vim
となり、matchit.vimは読み込まれているようです。

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

このプラクインはvimrcで次のように読み込んでいます。
source $VIMRUNTIME/macros/matchit.vim

なお、windows上のvim (香り屋版)では期待した通り
の動きをしています。
また、matchpairsの機能は正常に動いています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

matchit は % キーをキーマッピングで上書きして機能を置き換えることで実現しています。
うまく動かないのであれば、% を何か別のプラグインに取られている可能性が考えられます。
以下のコマンドで、% に何がマッピングされているかと、どのスクリプトで設定されたかを調べられます。

vim

1:verbose nmap %

正しく割り当てられている場合、設定に問題がある場合があります。

ファイルタイププラグインが有効になっている必要があります。vimrc に filetype plugin on のような記述が必要です。:filetype コマンドを実行して、detectionpluginON になっていれば有効になっています。

ファイルタイププラグインが有効になっていれば、html 系のファイルを開いた際に b:match_words が設定されます。matchit プラグインはこの値によってどのようにジャンプするのかを決定します。中身は複雑な値になっていますが、まずはこの値が何かしら設定されているかを確認してみるとよいかもしれません。:echo b:match_words


また、タグ間でジャンプする場合、<> の上で % を押すと < > 間のジャンプになります。タグ間でジャンプするにはタグの名前部分にカーソルを当てて % を押す必要があります。この点も確認してみてください。

投稿2021/06/10 00:50

編集2021/06/11 03:01
thinca

総合スコア1864

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HorinoTora

2021/06/10 09:43

私の質問に答えて頂き、ありがとうございます。 :verbose nmap % を実行した結果は n % * :<C-U>call <SNR>14_Match_wrapper('',1,'n') <CR> 最後にセットしたスクリプト: /usr/share/vim/vim82/pack/dist/opt/matchit/plugin/matchit.vim でした。これから見ると、% はmatchit.vim で使用しているのでしょうか。 現状では、<tag>の中で、% keyを打つと、< と> の間のmatchpairs の動きのようです。
thinca

2021/06/11 03:03

回答を加筆してみたので確認してみてください。 キーマッピングを見る限りだと、どうも matchit のバージョンが古いのが少し気になります。Vim 8.2.2311 に付属している matchit であれば <Plug> から始まる機能にマッピングされているはずなのですが… しかしバージョンが古くても動作はするはずなので、気にはなるもののそこは原因ではないと判断しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問