Vim의 conceaalcursor 및 conceaallevel?
漂亮男人
漂亮男人 2017-05-16 16:41:08
0
1
891

neosnippet 사용 시 발생하는 문제
문제는 이것이다. 네오스니펫을 사용하여 스니펫을 확장하면 네오스니펫은 작성자가 제공한 초기화 플러그인 코드에 따라 탭스톱을 생성합니다. 문제의 핵심은 스니펫을 확장하면 그런 다음 즉시 파일을 저장하고 종료합니다. 파일을 다시 열면 텍스트에 tabstop이 삽입되는 것을 볼 수 있습니다. 이 기능은 제가 github
https://github에서 작성자에게 제출한 문제입니다. .com/Shougo/neosnippet.vim/issues/236#issuecomment-44950979
작성자님도 이게 기능이라고 하셨는데, 결국 탭스톱이 텍스트에 삽입되는 문제를 해결하는 방법을 물어보니 한번 봐보라고 하더군요

:숨겨진 레벨을 도와주세요
:도움말 커서 숨기기

읽었지만 여전히 이 문제를 해결하는 방법을 모르겠습니다.

사실 제가 궁금한 점은 탭스톱이 텍스트에 삽입되지 않은 경우입니다

아래 사진은 스니펫을 펼쳤을 때 나타나는 탭스톱입니다. (저작자의 권장 설정을 취소해 탭스톱이 보이도록 했습니다)

다음으로, 즉시 텍스트를 종료하고 다시 열면 파일에 탭스톱이 삽입된 것을 볼 수 있습니다

漂亮男人
漂亮男人

모든 응답(1)
巴扎黑

이러한 것들은 플러그인의 자리 표시자입니다. tabstop은 vim에서 특정한 의미를 갖기 때문에 호출하지 마세요. 당신이 무슨 말을 하는지 이해하는 데 오랜 시간이 걸렸습니다. tabstop,因为 tabstop 在 vim 里是有特定的意思的,你这样一说,我看了半天才明白你说的是什么。

首先那些占位符是肯定有用的,当你展开代码片段的时候占位符帮助你确定需要填写的代码的位置。我个人觉得比较纳闷的一点是:你都展开一个代码片段了,你不把它填完却直接关掉文件再打开,这是何故?好奇葩的操作习惯啊!

不过呢,即使应对奇葩人士 vim 也有足够的办法,Shougo 让你看的那个东东,在 vim 里叫做 conceal (text),用汉语理解就是“隐藏字符”。Neosnippet 里的那些占位符就是隐藏字符,你可以调整隐藏字符是否/如何呈现。

隐藏字符并不是真的隐藏起来了,它是 vim syntax 里的一种特殊语法,你可以用语法配置命令设置隐藏字符的视觉状态,所以如果你发现隐藏字符的设置和你想的不完全一样,那么也许你正在使用的语法(配色)有这方面的设置,你可以换一个或者钻进去看看。

接下来说说常规情况下那两个选项:conceallevelconcealcursor

当文本被标记为“隐藏字符”的时候,conceallevel 决定这些文本如何显示,它有四个值:

  1. 设为 0,不隐藏,该咋样还是咋样(这是默认值,所以占位符依然看得见)

  2. 设为 1,每一块隐藏字符用一个特殊字符来替换,这个字符是由当前使用的语法配置设置的,如果语法高亮没有,那就使用 listchars 选项里设置的字符,如果这也没有,默认的替换字符是一个空格

  3. 设为 2,让隐藏字符完全隐藏(意思是即便默认的空格也不用),但如果语法配置里有设置替换字符的话,就用设置的

  4. 设为 3,完全不显示隐藏字符,不管有没有任何设置。

到目前为止,你可能觉得设置成 3 最清爽了吧,但是你要小心,完全不显示隐藏字符就意味着一旦某些插件自作主张替你设置了隐藏字符,你是永远也看不到它们的!比如说我曾经用过一个 JSON 的语法高亮插件,不知道作者是怎么想的,他把所有的 ;

우선, 이러한 자리 표시자는 코드 조각을 확장할 때 채워야 할 코드의 위치를 ​​결정하는 데 도움이 됩니다. 개인적으로 이해하기 어려운 점 중 하나는 코드 조각을 확장한 후 파일을 닫았다가 완료하지 않고 다시 열었다는 것입니다. 이유는 무엇입니까? 정말 이상한 작동 습관입니다! 🎜 🎜그러나 vim조차도 이상한 사람들을 처리할 수 있는 충분한 솔루션을 가지고 있습니다. Shougo가 볼 수 있는 항목은 vim에서 conceal(text)라고 불리며 중국어로 "숨겨진 문자"를 의미합니다. Neosnippet의 해당 자리 표시자는 숨겨진 문자이며, 숨겨진 문자의 렌더링 여부와 렌더링 방법을 조정할 수 있습니다. 🎜 🎜숨겨진 문자는 실제로 숨겨진 것이 아닙니다. vim 구문의 특수 구문이므로 구문 구성 명령을 사용하여 숨겨진 문자의 시각적 상태를 설정할 수 있으므로 숨겨진 문자의 설정이 정확히 생각한 것과 다르다는 것을 알게 됩니다. , 사용 중인 구문(색상 일치)에 이와 관련된 설정이 있을 수 있습니다. 이를 변경하거나 자세히 살펴볼 수 있습니다. 🎜 🎜일반적인 상황에서 conceallevelconcealcursor라는 두 가지 옵션에 대해 이야기해 보겠습니다. 🎜 🎜텍스트가 "숨겨진 문자"로 표시되면 conceallevel은 텍스트 표시 방법을 결정합니다. 🎜
  • 🎜숨겨지지 않고 0으로 설정하세요(기본값이므로 자리 표시자가 계속 표시됩니다)🎜
  • 🎜1로 설정합니다. 숨겨진 문자는 각각 특수 문자로 대체됩니다. 이 문자는 현재 사용되는 구문 강조 표시를 사용할 수 없는 경우 문자 집합을 사용하세요. listchars 옵션에서 이를 사용할 수 없는 경우 기본 대체 문자는 공백입니다🎜
  • 🎜숨겨진 문자를 완전히 숨기려면(즉, 기본 공백도 사용하지 않음) 2로 설정하지만, 문법 구성에 대체 문자 집합이 있는 경우 집합을 사용하세요 🎜
  • 🎜3으로 설정하면 설정에 관계없이 숨겨진 문자가 전혀 표시되지 않습니다. 🎜
  • 🎜지금까지는 3으로 설정하는 것이 가장 신선하다고 생각할 수도 있지만, 주의해야 합니다. 숨겨진 문자를 전혀 표시하지 않는다는 것은 일부 플러그인에서 일단 숨김 문자를 설정했다는 의미입니다. 스스로 주도적으로 당신을 위한 캐릭터, 캐릭터, 당신은 결코 그들을 볼 수 없습니다! 예를 들어 JSON 구문 강조 플러그인을 사용한 적이 있는데 작성자가 어떻게 생각했는지 모르겠습니다. ;를 모두 숨겨진 문자로 설정했기 때문에 혼란스러웠습니다. 오랜만…🎜

    숨겨진 문자를 전혀 표시하지 않아야 한다면 최소한 concealcursor와 함께 사용하는 방법을 고려해야 합니다. 기본적으로 vim은 현재 커서가 있는 줄의 숨겨진 문자에 대해 conceallevel 설정을 채택하지 않습니다. 즉, 설정 방법에 관계없이 커서가 있는 줄의 숨겨진 문자는 concealcursor는 vim의 4가지 주요 모드(일반, 삽입, 시각적, 명령)에서 현재 커서가 있는 줄에 숨겨진 문자를 표시할지 여부를 결정합니다. concealcursor 来使用。默认状态下,vim 不会对当前光标所在行的隐藏字符采取 conceallevel 的设置,也就是说不管你怎么设置,当前光标所在行的隐藏字符都是会显示出来的,concealcursor 决定了在 vim 的四种主要模式里(常规、插入、可视、命令),当前光标所在行是否显示隐藏字符。

    补充一下:对于命令模式,当前光标所在行指得是搜索时的高亮匹配位置。

    这个选项默认是空,所以在四种模式下当前光标所在行都会显示隐藏字符,你可以在 n i v c 四个值里挑选组合来设置你希望的方式。就拿你这个例子来说吧,比方说你希望除了插入模式以外,剩下的时候我都不希望看到这些占位符(隐藏字符),那就 set concealcursor='nvc'

    추가 방법: 명령 모드의 경우 현재 커서가 위치한 줄은 검색 중에 강조 표시된 일치 위치를 나타냅니다.

    이 옵션은 기본적으로 비어 있으므로 4가지 모드에서 현재 커서가 위치한 줄에 숨겨진 문자가 표시됩니다. n i v c 4가지 값의 조합을 선택하여 원하는 방식으로 설정하세요. 예를 들어, 삽입 모드를 제외하고 이러한 자리 표시자(숨겨진 문자)를 표시하지 않으려면 set hidecursor='nvc' code>를 선택하세요. 이러한 코드 조각을 잘 알고 있다면 삽입 모드에서 숨겨진 문자를 표시하지 않아도 문제가 되지 않습니다. 🎜 🎜 그런데 UltiSnips를 사용해 볼 수 있습니다. 이 플러그인은 NeoSnippets보다 간단하며 NeoSnippets 코드 조각과 완벽하게 호환됩니다. 이는 초보자에게 매우 적합합니다(기능은 확실히 나쁘지 않습니다). 🎜
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿