2017-02-16 8 views
1

たとえば、カスタム文字を使用して80行に余白ラインを描画するプラグインを実装するとします。 *文字)。Vim/NeoVimでは、コンテンツを変更せずにテキストバッファを描画する方法

これはVimやNeovimでどのように行うことができますか?

しかし、もっと一般的には、テキストの内容に影響を与えずにテキストバッファーに物を描く方法がありますか?

たとえば、アクティブなウィンドウを表示するために明るい色にすることができるウィンドウの内側に内側の矩形を描画するにはどうすればよいですか?結果は、現在テキストバッファである行の最初の行が---文字で埋められることになり、現在テキストバッファであるものの最も右の列は|で埋められます。これは、ステータスラインまたは垂直分割線とは別に、ウィンドウの内側にあります。

その他このようなことを行う方法は?

現在、さまざまな方法でテキストバッファの上に描くいくつかのプラグイン:

+0

代わりに '' set colorcolumn = 80''が動作しますか? ':h 'cc''を参照してください。 –

答えて

2

EasyMotionがテキストの上に描画していない、私はこれが可能だとは思いません。それは何 は機能(sourcecode)を以下に定義されています。

function! EasyMotion#helper#VarReset(var, ...) "{{{ 
if ! exists('s:var_reset') 
    let s:var_reset = {} 
endif 

if a:0 == 0 && has_key(s:var_reset, a:var) 
    " Reset var to original value 
    " setbufvar(or bufname): '' or '%' can be used for the current buffer 
    call setbufvar('%', a:var, s:var_reset[a:var]) 
elseif a:0 == 1 
    " Save original value and set new var value 

    let new_value = a:0 == 1 ? a:1 : '' 

    " Store original value 
    let s:var_reset[a:var] = getbufvar("", a:var) 

    " Set new var value 
    call setbufvar('%', a:var, new_value) 
endif 
endfunction "}}} 

は、だから、すべての置き換え文字を保存し、後でそれらを復元します。 私はindentLineを見ていませんが、indentcharの下にはテキストがないので、おそらくインテリジェントなリスカーがあります。

とにかく私は一般的にプラグインまたはvimのいずれかのエキスパートではありません。私はあなたが望むものを達成するためのより簡単な方法があると思うので、この答えを書いています。たとえば、境界線を特定の色で強調表示したり、アクティブな分割の背景を変更したりすることができます。アクティブでない分割を調光するためのプラグインもあります:https://github.com/blueyed/vim-diminactive

+0

私はvimが好きだと思いますが、それはGUI描画能力を使ってもっと近代的なものだったと思います。たぶん、20年ぐらいの間にそれを実現するでしょう。 – trusktr

+0

私はvimの気を散らすことがとても気に入っています。私はあなたがvimを間違って使用しているので、GUI機能を望んでいると思うのですが(私はあなたの質問にはそう言いたくありません)、それに慣れるまでに多くの時間がかかります、私はまだ長い道のり=)を持っています。しかし、その理由の一部は、「間違ったやり方ではない」ことをしている多くのテキストエディタに慣れていることです。私たちがvimで始めるならば、それは完全にうまくいくでしょう。 –

+0

Trueですが、テキストベースのUIでは単純に達成できない基本的なUIスタイルがあります。 GUIでは、インデントガイド(vimプラグインはうまく動作しないハック)、便利な色付けと記号のミニマップ、テキストベースのUIでは不可能なその他の便利なものを描画するのは非常に簡単ですそれはVimの使い方に必ずしも欠点がありません。人がVimのマスターであっても、ミニマップのようなものは、非常に視覚的な人にはまだ有用です。 – trusktr

関連する問題