가로 스크롤을 비활성화하는 방법은 무엇입니까?


37

버퍼에 숨겨진 문자가 있으며 가로 스크롤로 정렬이 크게 중단됩니다.

비활성화하는 방법이 있습니까? 관련 옵션을 찾을 수 없습니다.

잘못된 가로 스크롤 데모

편집 : 데모가 추가되었습니다. vim은 파일의 숨겨지지 않은 부분에 대한 스크롤 오프셋을 기준으로 볼 수 있으므로 연결이 끊어집니다.


6
비활성화 할 수는 없지만:set wrap
EvergreenTree

8
@Enuy, 의미하는 것은 줄이 실제로 창 너비보다 길지만 일부 텍스트 (bash와 같은 색상 코드)가 숨겨져 있다는 것입니다. 따라서 Vim은 이미 창의 가장자리에 도달했다고 생각하지만 시각적으로는 그렇지 않습니다. 나는 이것이 버그로 자격이 있다고 말하고 싶다.
tommcdo

8
@tommcdo 네, 무슨 말인지 이해합니다. 줄 끝에 숨겨진 부분 만 줄 바꿈으로 인해 줄 바꿈에 비슷한 문제가 있습니다. code.google.com/p/vim/issues/detail?id=260
Enuy

3
그렇기 때문에 가로 스크롤을 모두 비활성화하는 대체 솔루션을 찾고 있습니다.
Enuy

3
내가 생각할 수있는 가장 가까운 것은 터미널에 있다면 <c-s>화면을 업데이트하지 않도록 터미널을 일시 중단하는 데 사용할 수 있습니다 . 그런 다음 맹목적으로 변경하고 줄의 시작 부분으로 돌아가서 <c-q>다시 시작하십시오. 도움이되지 않는 다른 옵션 : 같은 수의 숨겨진 문자가 모든 보이는 문자 사이에 있거나 창을 넓히도록하십시오.
Matt Boehm

답변:


2

가로 스크롤을 비활성화하는 방법

가로 스크롤을 비활성화하는 솔루션을 작성 했지만 ( @ ЯрославРахматуллин의 제안에서 riffing하여 ), 나는 당신이 그것을 좋아할 것이라고 생각하지 않습니다 :

augroup NoScrollPlease
  autocmd!
  autocmd CursorMoved * norm!99zH
augroup END

이렇게하면 다시 뒤로 스크롤하는 매우 정확한 방법으로 오른쪽으로 스크롤하는 것을 방지 할 수 있습니다. *

* 당신이 얼마나 오른쪽으로 스크롤했는지 또는 얼마나 오래 줄을 알지 못하기 때문에 임의의 "원거리"화면 너비를 99 반으로 스크롤하고 있습니다. 또한 "뒤로"왼쪽으로 스크롤하기 전에 실제로 오른쪽으로 스크롤했는지 여부를 확인하지 않아도됩니다. 실제로이 솔루션을 사용하려는 경우 getcurpos(), 'sidescroll'및 의 값을 비교하여 문제를 해결할 수 있습니다 'columns'.

왜 그렇게하고 싶지 않을까요

이것을 사용하지 않는 이유는 스크롤 문제의 근본 원인이 또 다른 문제이기 때문입니다. Vim은 커서를 "화면 외부"로 이동시키지 않습니다. 따라서 스크롤 후 커서가 화면에서 벗어나도록 왼쪽으로 스크롤하면 Vim은 커서와 함께 커서를 가져 와서 왼쪽으로 이동합니다.

그러나 커서가 화면에 있는지 여부에 사용되는 계산은 원래 문제를 스크롤할지 여부를 결정하는 데 사용하는 계산과 동일하기 때문에 순 효과는이 "솔루션"을 사용하여 이동하려고하면 일반적으로 옆으로 스크롤되는 상황에서 오른쪽으로 커서를 이동하면 커서가 전혀 움직이지 않습니다. **

** 현재 위치와 움직임에 따라 약간 더 정확하게하기 위해 커서가 오른쪽으로 움직일 수 있습니다. 스크롤이 정상적으로 발생하는 위치를 지나치지 않습니다.

다른 옵션?

계획된 해결 방법이 사라지지 않을까 걱정됩니다. 당신이 원하는 경우 가능한 일반적인 문제에 대한 해결책을, 빔 소스 코드에서 구현해야 할 것입니다.

마찬가지로 당신이 이미 언급 한 나는 당신의 지프에 표시된 문제의 특정 인스턴스에 대한 해결을위한 가장 좋은 건 사용을 중지하기 위해 플러그인 작성자 청원하는 것입니다 두려워하므로이 곧 도착하시면 않을 수 있습니다 conceal완전히 대신 버퍼에서 숨겨진 텍스트를 완전히 제거하십시오.

unconcealed 출력과의 언급을 기반 vim-plugin-AnsiEsc으로 문서있습니다 뭔가 그들을 구현하는 것이 가능하다고 할 수 있지만, 어떻게 플러그인 기능에 대한 지식없이 확실히 말할 어렵다.


0

파일을 편집하는 방법이있는 경우 여기에 설명 된대로 \[및으로 색상 설정을 래핑 할 수 있습니다 .\]

[...] 완료된 것은 '['와 ']'에 노란색을 시작하는 '\ 033 [1; 33m'을 묶어 쉘에 "대괄호 자체를 포함하여 이스케이프 된 대괄호 사이의 모든 것을 비 인쇄 문자입니다 ...]

그렇지 않으면 전체 색상 코드가 문자로 간주되므로 가로 스크롤을 고려할 수 있습니다.

나는 이것이 문제인지 확신하지 못하지만, 캘린더의 출처 (와 syntax off)와 현재 행동을 보면서 그것을 생각하게했습니다.


문제는 색상이 아니라 conceal기능에 의해 숨겨진 문자입니다 (주석의 설명 참조).
리치

네 이해했습니다. 어쩌면 내가 잘 파악하지 못한 것이 있지만 PS1에서 색상 문자를 사용하는 bash에서 비슷한 문제가 있었으며 (색상이라는 사실은 중요하지 않음) 터미널은 새 줄에 올바르게 돌아 오지 않았습니다. 색상에 대한 문자를 유효 문자로 계산 했으므로 보이지 않지만 무시해야했습니다. 애니메이션은이 문제를 상기시켜줍니다 (수평 페이지 매김이 줄에있는 문자 수를 기반으로하는 것처럼 너무 빠릅니다). 이것은 내 대답의 링크에 언급되어 있습니다.
padawin

두 문제는 비슷합니다. 그러나이 질문에 설명 된 동작은 Vim이 문자를 계산 하는 방식 (터미널이 아닌) 때문에 발생하므로 첫 번째 단락에서 제안한 내용이 여기에 도움이되지 않습니다.
Rich

0

편집 : 이것은 알려진 버그이며 "수정되지 않습니다": https://github.com/vim/vim/issues/260

원래 답변 :

커서가 화면 가장자리에 닿을 때까지 내 vim이 가로로 스크롤되지 않습니다.

사용하고 sidescrolloff있습니까?

가로 스크롤을 완전히 비활성화하는 방법을 모르지만이 설정은 커서가 가장자리에서 벗어날 때까지 기다려야합니다.

:set sidescrolloff=0

'sidescrolloff=0'Vim은 커서 가장자리를 벗어났다고 생각하기 때문에 문제가 존재 합니다. 보이는 텍스트가 아닌 숨겨진 텍스트를 기반으로 계산합니다.
리치

오, 정말 버그가 있습니다. 이것에 관한 버그 보고서를 찾아 내 답변에 추가했습니다. vim 관리자는 고치기를 원하지 않습니다.
JasonWoof

이 버그에 대한 수정은 아니지만 ... 버퍼에 일반 텍스트로 색상을 구현하고 색상 / etc에 대해서는 prop_type_add () 및 prop_add ()를 구현할 수 있습니다.
JasonWoof

그렇습니다. 버그가 많지만 버그 보고서는 OP가 해결 방법을 찾고있는이 질문을 쓴 이유입니다 !
리치
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.