40779


[![画像の説明をここに入力](https://i.stack.imgur.com/Y4rpw.png)](https://i.stack.imgur.com/Y4rpw.png)

ALE等のプラグインを使っていると、Linterがこのようなメッセージをコマンドラインウインドウに表示してくれますが、これをそのままクリップボードにコピーし、ブラウザでGoogle検索等を行いたいです。


CC BY-SA 3.0
2018-01-06T07:06:40.207
40769
2021-03-06T08:24:12.273
17238
question
vim
Vimのコマンドラインウインドウに表示されているメッセージをクリップボードにコピーしたい


[thinca](https://ja.stackoverflow.com/users/2541/thinca)さんの[回答](https://ja.stackoverflow.com/a/40779/25936)を見ていて閃きました。  
`:messages`の最下行をクリップボードへコピーするコマンドとクエリにしてWeb検索するコマンドです。  
(が、まだまだ改善の余地がある筈なのでよろしければコメントを付けていただくなり、回答を編集するなりお願いします)  
なお、`xdg-open`がなかったり別の検索エンジンを使いたいという場合は、お使いの環境に合わせて適宜書き換えてください。

[code]

    command MesToClipboard let @+ = execute("1messages")
    
    command! MesDeSearch call system("xdg-open \"https://www.duckduckgo.com/?q=" .. execute("1messages") .. "\"")
    
[/code]


CC BY-SA 4.0
2018-01-06T14:30:03.333
40778
2021-03-06T08:24:12.273
2021-03-06T08:24:12.273
25936
25936
40769
answer


`:messages` をバッファに出す方法を紹介します。

[code]

    :new
    :put =execute('messages')
    
[/code]

これで新しいバッファに `:messages` の出力が書き込まれるので、通常のテキストと同様に扱えます。

ただし、中には `:messages` に記録されないメッセージもあります。その場合は表示された後で結果を取ることは残念ながらできません。(CUI
なら端末側の機能で取ることはできます)


CC BY-SA 3.0
2018-01-06T15:08:38.860
40779
2018-01-06T15:08:38.860
2541
40769
answer