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

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

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

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

Q&A

解決済

1回答

1318閲覧

vimで特定の行、位置を指定したsyntax highlightは可能か

Pyons04

総合スコア19

Vim

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

1グッド

1クリップ

投稿2020/03/12 14:26

つい先日vimを使い始めた者です。

vim scriptで特定の行、位置(例: 10行目45文字目から60文字目)といった位置を指定した文字色の変更やハイライトは可能なのでしょうか

具体的には、「nywコマンドやnyyコマンドで文字をヤンクした際、ヤンクされた範囲だけが(ペーストされるまで、或いはカーソルが移動するまで)色の変化等で強調される」ようなVim Scriptファイルを書いてみようと思ったのですが、

無名レジスタからヤンクされた文字列を取得する方法は見つかっても、それを編集画面上で強調して表示する方法が自力では見つけられませんでした。

vim

1function HighlightYank() 2 execute "syntax keyword yanked " . @@ 3 hi link yanked <color> 4endfunction 5 6autocmd TextYankPost *.vim call HighlightYank()

このように書くことで、シンタックスハイライトの対象となる文字列を動的に設定する方法は思いついたのですが、この方法ではハイライト対象が編集ファイル全体になってしまうと思います。

「カーソル直後からヤンクされた文字列の末尾までがマッチする範囲を行、文字位置で取得する」コードをRubyなどで書き、そこで得られた座標(?)を元に文字色の変更を実施する。

...ということはvim scriptで実現可能なのでしょうか。
非常に初歩的な質問でしたら申し訳ありません。

なお

vim version 8.0.1453 Windows Terminal (Preview) Version: 0.9.433.0 Ubuntu (on WSL)

という環境を利用しております。
よろしくお願いいたします。

s.k👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

ちょっと直接の回答にはなってないですが、↓のようなプラグインのような動作になる感じですかね??(実装の参考になれば)

https://github.com/haya14busa/vim-operator-flashy
https://github.com/neoclide/coc-yank

(この問題を解決したい感じでなく、自分で実装したい感じでしたら、たぶんもう少しvim scriptに熟練した人たちが回答くれるかと)

投稿2020/03/12 15:24

編集2020/03/12 15:29
yutkat

総合スコア135

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

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

Pyons04

2020/03/13 01:31 編集

yutakatay様 迅速なご回答ありがとうございます。そして、返信が遅くなりまして申し訳ありません。 実現したかったことは正にこれ(haya14busa様のvim-operator-flashy)でした。こうしたプラグインが自力で見つけられなかったので、Vim Scriptで自力実装してみようと思い立ったのが質問のきっかけでした。 実現したかったことはこのプラグインで解決しましたが、どのように実装してあるのか中身が非常に気になるので、頑張ってコードを読み込んでみようと思います。 ご丁寧な回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問