Maison > Questions et réponses > le corps du texte
Problèmes rencontrés lors de l'utilisation de neosnippet
Eh bien, le problème est le suivant : lorsque vous utilisez neosnippet pour développer un extrait, neosnippet générera des tabstops. Ces tabstops sont masqués selon le code du plug-in d'initialisation donné par l'auteur. La clé du problème est que si je développe un extrait de code, puis enregistrez et quittez immédiatement le fichier. Lorsque vous ouvrez à nouveau le fichier, vous constaterez que la tabulation est insérée dans le texte. Cette fonctionnalité me déprime beaucoup. C'est un problème que j'ai soumis à l'auteur sur github
https://github. .com/Shougo/neosnippet.vim/issues/236#issuecomment-44950979
L'auteur m'a également dit qu'il s'agissait d'une fonctionnalité, mais quand j'ai finalement demandé si la tabulation était insérée dans le texte, il m'a demandé d'y jeter un œil
: aide à dissimuler le niveau
:aide à dissimuler le curseur
Je l'ai lu, mais je ne sais toujours pas comment résoudre ce problème.
En fait, ma question est la suivante : si le taquet de tabulation n'est pas inséré dans le texte
L'image ci-dessous est la tabulation qui apparaît lorsqu'un extrait est développé (j'ai annulé les paramètres recommandés par l'auteur pour que la tabulation soit visible)
Ensuite, quittez immédiatement le texte et rouvrez-le, vous verrez que la tabulation est insérée dans le fichier
巴扎黑2017-05-16 16:43:08
Ces éléments sont des espaces réservés dans le plug-in. Veuillez ne pas les appeler tabstop
, car tabstop
a une signification spécifique dans vim. Si vous le dites, je le pense. Il m'a fallu beaucoup de temps pour comprendre de quoi tu parlais. tabstop
,因为 tabstop
在 vim 里是有特定的意思的,你这样一说,我看了半天才明白你说的是什么。
首先那些占位符是肯定有用的,当你展开代码片段的时候占位符帮助你确定需要填写的代码的位置。我个人觉得比较纳闷的一点是:你都展开一个代码片段了,你不把它填完却直接关掉文件再打开,这是何故?好奇葩的操作习惯啊!
不过呢,即使应对奇葩人士 vim 也有足够的办法,Shougo 让你看的那个东东,在 vim 里叫做 conceal (text)
,用汉语理解就是“隐藏字符”。Neosnippet 里的那些占位符就是隐藏字符,你可以调整隐藏字符是否/如何呈现。
隐藏字符并不是真的隐藏起来了,它是 vim syntax 里的一种特殊语法,你可以用语法配置命令设置隐藏字符的视觉状态,所以如果你发现隐藏字符的设置和你想的不完全一样,那么也许你正在使用的语法(配色)有这方面的设置,你可以换一个或者钻进去看看。
接下来说说常规情况下那两个选项:conceallevel
和 concealcursor
。
当文本被标记为“隐藏字符”的时候,conceallevel
决定这些文本如何显示,它有四个值:
设为 0
,不隐藏,该咋样还是咋样(这是默认值,所以占位符依然看得见)
设为 1
,每一块隐藏字符用一个特殊字符来替换,这个字符是由当前使用的语法配置设置的,如果语法高亮没有,那就使用 listchars
选项里设置的字符,如果这也没有,默认的替换字符是一个空格
设为 2
,让隐藏字符完全隐藏(意思是即便默认的空格也不用),但如果语法配置里有设置替换字符的话,就用设置的
设为 3
,完全不显示隐藏字符,不管有没有任何设置。
到目前为止,你可能觉得设置成 3
最清爽了吧,但是你要小心,完全不显示隐藏字符就意味着一旦某些插件自作主张替你设置了隐藏字符,你是永远也看不到它们的!比如说我曾经用过一个 JSON 的语法高亮插件,不知道作者是怎么想的,他把所有的 ;
dissimuler (texte)
dans vim, ce qui signifie en chinois "caractères cachés". Ces espaces réservés dans Neosnippet sont des caractères cachés, et vous pouvez ajuster si/comment les caractères cachés sont rendus. 🎜
🎜Les caractères cachés ne sont pas vraiment cachés. Il s'agit d'une syntaxe spéciale dans la syntaxe vim. Vous pouvez utiliser la commande de configuration de la syntaxe pour définir l'état visuel des caractères cachés, donc si vous trouvez que le paramètre des caractères cachés n'est pas exactement ce que vous pensiez. , alors peut-être que la syntaxe (correspondance des couleurs) que vous utilisez a des paramètres à cet égard. Vous pouvez la modifier ou creuser et y jeter un œil. 🎜
🎜Parlons des deux options dans des circonstances normales : conceallevel
et concealcursor
. 🎜
🎜Lorsque le texte est marqué comme "caractères cachés", conceallevel
détermine la façon dont le texte est affiché. Il a quatre valeurs : 🎜
0
, non masqué, comme il se doit (c'est la valeur par défaut, donc l'espace réservé est toujours visible)🎜1
. Chaque caractère masqué est remplacé par un caractère spécial. Ce caractère est défini par la configuration de syntaxe actuellement utilisée. Si la coloration syntaxique n'est pas disponible, utilisez Le jeu de caractères. dans l'option listchars
Si celle-ci n'est pas disponible, le caractère de remplacement par défaut est un espace🎜2
pour masquer complètement les caractères cachés (ce qui signifie que même les espaces par défaut ne sont pas utilisés), mais s'il existe un jeu de caractères de remplacement dans la configuration grammaticale, utilisez le jeu 🎜< /li >
3
et les caractères masqués ne seront pas affichés du tout, quels que soient les paramètres. 🎜3
est le plus rafraîchissant, mais vous devez être prudent Ne pas afficher du tout les caractères masqués signifie qu'une fois que certains plug-ins ont défini le masqué. des personnages pour vous de leur propre initiative, des Personnages, on ne les voit jamais ! Par exemple, j'ai déjà utilisé un plug-in de coloration syntaxique JSON. Je ne sais pas ce que l'auteur pensait. Il a défini tous les ;
comme caractères masqués, ce qui m'a rendu confus. ça fait longtemps…🎜Si vous ne devez pas du tout afficher les caractères cachés, vous devriez au moins réfléchir à la façon de l'utiliser avec concealcursor
. Par défaut, vim n'adoptera pas le paramètre conceallevel
pour les caractères cachés dans la ligne où se trouve le curseur actuel, ce qui signifie que peu importe la façon dont vous le définissez, les caractères cachés dans la ligne où se trouve le curseur se trouve actuellement sera affiché, < code>concealcursor détermine si les caractères cachés sont affichés dans la ligne où se trouve le curseur actuel dans les quatre modes principaux de vim (régulier, insertion, visuel, commande). concealcursor
来使用。默认状态下,vim 不会对当前光标所在行的隐藏字符采取 conceallevel
的设置,也就是说不管你怎么设置,当前光标所在行的隐藏字符都是会显示出来的,concealcursor
决定了在 vim 的四种主要模式里(常规、插入、可视、命令),当前光标所在行是否显示隐藏字符。
补充一下:对于命令模式,当前光标所在行指得是搜索时的高亮匹配位置。
这个选项默认是空,所以在四种模式下当前光标所在行都会显示隐藏字符,你可以在 n
i
v
c
四个值里挑选组合来设置你希望的方式。就拿你这个例子来说吧,比方说你希望除了插入模式以外,剩下的时候我都不希望看到这些占位符(隐藏字符),那就 set concealcursor='nvc'
Cette option est vide par défaut, donc dans les quatre modes, les caractères cachés seront affichés dans la ligne où se trouve le curseur actuel. Vous pouvez utiliser
n
i
set hidecursor='nvc' code>. Si vous connaissez bien ces extraits de code, peu importe si vous n'affichez pas les caractères masqués en mode insertion. 🎜
🎜Au fait, vous pouvez essayer UltiSnips. Ce plug-in est plus simple que NeoSnippets et est entièrement compatible avec les extraits de code NeoSnippets. Il convient très bien aux débutants (la fonctionnalité n'est certainement pas mauvaise). 🎜répondre0