nano의 문자열과 주석 조합에 대한 구문 강조

nano의 문자열과 주석 조합에 대한 구문 강조

.nanorc아래 텍스트 와 같이 구문 강조를 구성할 수 있는지 누군가 말해 줄 수 있는지 궁금합니다 .

Dim s$ = "foo ' bar" ' bar "foo"

... 문자열은 "foo 'bar"모두 한 색상으로 강조 표시되고, 뒤따르는 주석은 ' bar "foo"다른 색상으로 강조 표시됩니다.

내가 이렇게 하면:

# Comments.
color yellow "'.*"

# Strings
color brightmagenta ""(\\.|[^"])*""

그러면 나는 이것을 얻습니다:

그림 1

다른 순서로 하면:

# Strings
color brightmagenta ""(\\.|[^"])*""

# Comments.
color yellow "'.*"

그러면 나는 이것을 얻습니다:

그림 2

답변1

댓글에 다음과 같은 내용이 있는 경우아니요가 포함되어 있습니다 '. 즉마지막 '그 줄이 주석의 시작 부분인 경우 가장 잘 작동하는 것 같습니다.뒤로줄 끝부터 비탐욕 검색이 수행됩니다.

문자열 용어를 사용하지만 다른 주석 용어를 사용하는 방법을 시도해 보세요.

# Strings
color brightmagenta ""(\\.|[^"])*""

# Comments.
color green "[^']*$"

이것은 작동합니다.와는 별개로안타깝게도 주석 표시( ')에는 색상이 지정되어 있지 않습니다.

거의 원하는 결과의 스크린샷

다음과 같이 추가하십시오 '.

# Strings
color brightmagenta ""(\\.|[^"])*""

# Comments.
color green "'[^']*$"

마침내 원하는 결과를 얻었습니다.

원하는 결과의 스크린샷

참고: 탐욕스럽지 않은 대안[^']*'.*?, 나야첫 번째아래를 참조하여 사용해 보았으나 실패했습니다...


게으른(탐욕적이지 않음) *?오류가 발생합니다.

.*?나의 첫 번째 생각은 사용하는 것이 었습니다.회의주석 표시( ')도 다음과 같이 색상이 지정됩니다.

# Comments.

color green "'.*?$"

논리적으로, 끝부터 시작하는 탐욕스럽지 않은 검색은 귀하의 댓글에도 적용됩니다.

그러나 nano에서는 오류가 발생합니다.

Bad regex "'.*?$": repetition-operator operand invalid

그것가능한오류입니다. 참조하세요.Mac OS에서 Brew #41의 nano 2.3.6을 사용할 때 php.nanorc, sh.nanorc 및 zsh.nanorc의 정규식 오류수정되었다고 합니다:

답변: POSIX 정규 표현식은 지원되지 않습니까? 게으름(또는 단순한 게으름) 때문입니다. 문제가 있는 줄에서 ?를 제거하면 오류가 제거되지만 다른 사람의 평가가 바뀌므로 여기서는 그렇게 하고 싶지 않을 것입니다.

참고: OS X에서 nano를 실행할 때 이 오류가 발생했습니다. 이것이 관련이 있는지 확실하지 않습니다.

관련 정보