neosnippet の使用時に発生した問題
さて、問題は、スニペットを展開するために neosnippet がタブストップを生成することです。問題の鍵は、スニペットを展開すると、これらのタブストップが非表示になることです。ファイルを保存してすぐに終了します。もう一度ファイルを開くと、テキストにタブストップが挿入されていることがわかります。これは私が github で作者に提出した問題です。 .com/Shougo/neosnippet.vim/issues/236#issuecomment-44950979
作者にもこれは機能だと言われましたが、最後に本文中にタブストップが挿入されているか尋ねたら、見てくださいと言われました
:カーソルを隠すのに協力してください
実際、私の質問は、タブストップがテキストに挿入されていない場合です
下の画像はスニペットを展開したときに表示されるタブストップです(作者推奨の設定を解除しているのでタブストップが見えるようにしています)
次に、テキストをすぐに終了して再度開くと、タブストップがファイルに挿入されていることがわかります
巴扎黑2017-05-16 16:43:08
これらはプラグイン内のプレースホルダーです。呼び出さないでください tabstop
,因为 tabstop
これらは vim では特定の意味を持っています。あなたがこれを言ったとき、私はあなたが何を言っているのかを理解するのに長い時間がかかりました。
まず第一に、これらのプレースホルダーは、コード スニペットを展開するときに、入力する必要があるコードの場所を決定するのに役立ちます。 個人的に、私が不可解だと思うのは、コード スニペットを展開したのに、入力が完了せず、ファイルを閉じて再度開くだけなのはなぜでしょうか。なんて奇妙な操作習慣でしょう!
しかし、vim にも変な人に対処する十分な方法があります。Shougo が見せているものは vim では conceal (text)
と呼ばれ、中国語で「隠し文字」を意味します。 Neosnippet のこれらのプレースホルダーは隠し文字であり、隠し文字をレンダリングするかどうか/どのようにレンダリングするかを調整できます。
隠し文字は実際には非表示ではありません。これは vim 構文の特別な構文であるため、隠し文字の設定が思ったものと異なる場合は、構文設定コマンドを使用できます。使用している構文 (カラー マッチング) にこの点に関する設定がある可能性があります。それを変更するか、詳しく調べてください。
通常の状況における 2 つのオプションについて話しましょう: conceallevel
和 concealcursor
。
テキストが「隠し文字」としてマークされている場合、conceallevel
はテキストの表示方法を決定します:
本来の非表示ではなく、0
に設定します(これがデフォルトであるため、プレースホルダーはまだ表示されています)
は、1
,每一块隐藏字符用一个特殊字符来替换,这个字符是由当前使用的语法配置设置的,如果语法高亮没有,那就使用 listchars
オプションで設定された文字に設定されます。これが使用できない場合、デフォルトの置換文字はスペース
は、隠し文字を完全に非表示にする (つまり、デフォルトのスペースも使用されない) ために 2
に設定されますが、文法設定に置換文字セットがある場合は、セット
3
に設定すると、どの設定に関わらず隠し文字が一切表示されなくなります。
これまでのところ、3
最清爽了吧,但是你要小心,完全不显示隐藏字符就意味着一旦某些插件自作主张替你设置了隐藏字符,你是永远也看不到它们的!比如说我曾经用过一个 JSON 的语法高亮插件,不知道作者是怎么想的,他把所有的 ;
に設定するのが最もすっきりしていると思われるかもしれませんが、 注意しなければならないのは隠し文字をまったく表示しないということは、一部のプラグインが勝手に隠し文字を設定してしまうことを意味します。もう二度と見ることはできません。 たとえば、私はかつて JSON 構文強調表示プラグインを使用しましたが、作成者がすべての ;
を隠し文字として設定したため、混乱してしまいました。お久しぶりです…
隠し文字をまったく表示してはならない場合は、少なくともそれを一致させる方法を検討する必要があります。 concealcursor
来使用。默认状态下,vim 不会对当前光标所在行的隐藏字符采取 conceallevel
的设置,也就是说不管你怎么设置,当前光标所在行的隐藏字符都是会显示出来的,concealcursor
vim の 4 つの主要なモード (通常、挿入、ビジュアル、指示)。
追加: コマンド モードの場合、現在のカーソルがある行は、検索中に強調表示された一致位置を参照します。
このオプションはデフォルトでは空になっているため、4 つのモードで、現在のカーソルが置かれている行に隠し文字を表示することができます。これらのコード スニペットをよく知っていれば、挿入モードで隠し文字を表示しなくても問題ありません。 n
i
v
c
四个值里挑选组合来设置你希望的方式。就拿你这个例子来说吧,比方说你希望除了插入模式以外,剩下的时候我都不希望看到这些占位符(隐藏字符),那就 set concealcursor='nvc'