X11 환경에서 NBSP 문자 비활성화

X11 환경에서 NBSP 문자 비활성화

"alt-gr" 문자 다음에 "공백" 문자를 사용할 때 그 자리에 "줄바꿈하지 않는 공백 문자"(일명 nbsp)를 입력하지 못하는 경우가 종종 있습니다.

파이프라인 명령 예: mount |<space>tail마지막 mount |<nbsp>tail 명령은 오류를 트리거합니다 ..." tail" command unfindable...(명령 앞의 시각적 공간 참고).꼬리명령 이름은 실제로 nbsp 문자입니다.

그래서 내가 찾았어완벽한 솔루션제 경우에는 nbsp 문자를 무력화하면 됩니다.

setxkbmap -option "nbsp:none"

그러나 이 변경 사항은 전체 시스템에 즉시 영향을 미치며 이를 증명하기 위해 LibreOffice Writer에서 그룹화되어야 하는 두 단어 사이에 nbsp 문자를 추가하려는 경우 작동하지 않습니다.

예전부터 나는 작동하지 않는 명령이나 왜 그 빌어먹을 역할 때문에 스크립트나 서비스가 시작되지 않는지 알아내는데 많은 시간을 보냈습니다.

그래서 중화를 셸(콘솔, 터미널, vty, tty 등)으로 제한하는 솔루션이 있는지 스스로에게 물었습니다. bash나 다른 쉘에서...

이 빌어먹을 nbsp 역할이 셸에서 어떤 역할을 하는지 말해 줄 수 있나요? 언제, 어디서, 무엇을 위해 사용되나요? 그것을 사용하지 않음으로써 우리가 잃는 것은 무엇입니까?

또 다른 제안: 그것을 중성화하는 대신 컬러가 있는 그래픽 문자를 통해 보여줄 수 있을까요?

답변1

~처럼카밀NBSP 기능이 거의 95%의 경우 작동하지 않는다는 것을 깨달았습니다. 따라서 이를 비활성화할 수 있으며 나머지 5%에 대해서는 이 문자가 필요한 모든 응용 프로그램에 이 문자를 삽입할 수 있도록 다른 패치를 구현해야 합니다.

머리말: 우리가 같은 내용을 이야기하고 있는지 확인하기 위해 PTS 콘솔과 TTY 콘솔의 차이점을 말씀드리고 싶습니다. 나에게 PTS는 데스크톱 환경에서 여는 GUI 콘솔(그래픽)이고 나에게 TTY는 조합을 통해 여는 CLI(명령줄)입니다.Ctrl-Alt-Fn(n은 일반적으로 1에서 7 사이의 세션 번호를 나타내며 7은 기본적으로 X11 그래픽 세션용으로 예약되어 있습니다.)

X11 환경에서 NBSP 문자 비활성화

따라서 내 검색(위 참조)을 기반으로 내 X11 환경에서 NBSP 문자를 비활성화할 수 있습니다. X11은 그래픽 환경이므로 비활성화는 그래픽 환경에서 수행해야 합니다.

그래서 나는 자동 시작 스크립트에서 이를 구현하는 것을 제안합니다(나의 경우 XFCE DE에서):

user@host:~$ cat <<EOF > $HOME/.config/autostart/setxkbmap_no_nbsp.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=No NBSP
Comment=Disable NBSP key
Exec=/usr/bin/setxkbmap -option "nbsp:none"
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false
EOF

Libre Office Writer용 NBSP 단축키 리디렉션

때로는 Libre Office Writer에서 NBSP 문자를 삽입해야 하지만 비활성화되어 있으므로(위 참조) 여전히 해당 문자를 삽입하는 방법을 찾아야 합니다.

나는 사용하는 것이 좋습니다Ctrl-Shift-스페이스바대체하십시오.

따라서 매크로의 경우(여기에서 사용 가능: 도구 → 매크로 → 매크로 구성 → LOdev 기본 → 내 매크로 > 표준 > 모듈 1 > 편집):

REM  *****  BASIC  *****

' Based on : https://ask.libreoffice.org/t/special-characters/1089/3
Sub InsertNBSP
 Dim oDoc as variant
  oDoc = ThisComponent
 Dim oCurrentController as variant
  oCurrentController = oDoc.getCurrentController()
 Dim oTextViewCursor as variant
  oTextViewCursor = oCurrentController.getViewCursor()
 Dim oText as variant
 If IsEmpty(oTextViewCursor.Cell) Then
  oText=oTextViewCursor.Text
 Else
  oText=oTextViewCursor.Cell.Text
 End If
 ' NBSP unicode : https://www.compart.com/en/unicode/U+00A0
 oText.insertString(oTextViewCursor,_
  chr(clng("&H00A0&")),false)
End Sub

참고: NBSP 유니코드 코드는 U+00A0이며 제 경우에는 결과 코드가 다음과 같이 작성되었습니다.$HOME/.config/libreoffice/4/user/basic/Standard/Module1.xba

키 바인딩의 경우(도구 → 사용자 정의... → 키보드)를 사용합니다.Ctrl-Shift-스페이스바라는 매크로 함수에 바인딩됩니다.삽입NBSP

참고: 내 예에서는 결과 연결이 다음과 같이 작성되었습니다.$HOME/.config/libreoffice/4/user/registrymodifications.xcu


vim에 일부 문자 표시(NBSP 포함)

기반원천중요한 인물들을 모두 드러내는 방법을 찾았어요정력(이것은 제가 가장 좋아하는 텍스트 편집기입니다.) 색상은 녹색입니다(내 경우에는). NBSP 입력을 방해하는 요소가 없기 때문에 이는 TTY 콘솔에 유용합니다.

중요: 쉘에 대한 액세스 권한이 있는지 여부에 따라 다릅니다.PTS또는텔레타이프라이터콘솔에서는 유니코드 문자(첫 번째 경우)를 사용하거나 유니코드 문자를 부분적으로 사용할 수 있습니다(두 번째 경우에는 TTY가 전체 유니코드를 지원하도록 만드는 것이 가능합니다(테스트되지 않음).

전제조건: 다음 구성 라인을 추가하기 전에 다음을 확인하십시오.정력아직 설치되지 않았습니다.

# See more here : https://vimhelp.org/options.txt.html#%27listchars%27
user@host:~$ mkdir .vim
user@host:~$ echo -e "set list\nset listchars=tab:\>\ ,trail:·,nbsp:?" >> $HOME/.vim/vimrc

노트:

  • 상표모든 탭은 공백 그룹을 구별하기 위해 표시되며 보다 큼(>)으로 대체됩니다.
  • 추적하다줄 끝의 모든 후행 공백이 표시되며, 이 유니코드를 입력하려면 중간에 점(·)으로 대체됩니다. 아래를 참조하세요.
  • NBSP대부분의 경우 유용하지 않은 모든 NBSP 문자가 표시되며(절대 사용되지는 않음) 물음표(?)로 표시됩니다.
  • 이는 PTS 콘솔에서만 작동하므로 권장되지 않지만(TTY에서 전체 유니코드 지원을 통합하지 않는 한) 좀 더 의미 있고 이국적인 유니코드 문자를 사용할 수 있습니다. 예를 들어 tab은 ⇥로 구성될 수 있으며 nbsp는 다음과 같이 구성됩니다. "☠"(아래 참조)

PTS 콘솔에서 유니코드 문자 사용

중요: 이 방법은 내 구성에 적합하지만 모든 환경에서 작동할지는 모르겠습니다.

탭 문자를 입력하려면(아래의 다른 코드 참조):

  • 쉘에서 (원천):Ctrl-Shift-U 21e5

  • vim에서 (원천):Ctrl-V u 21e5

PTS의 유니코드 문자:

TTY 쉘 콘솔에서 NBSP 문자 비활성화

마지막으로 처리되지 않은 사례는 TTY 콘솔입니다.@Kamil이 나에게 제안한 것처럼$HOME/.bashrc 파일에 다음 줄을 추가하여 NBSP를 비활성화할 수 있습니다.

user@host:~$ echo -e "bind '\"\302\240\":\" \"'" >> $HOME/.bashrc

결론적으로

이제 X11, PTS bash 쉘 및정력PTS에서는 setxkbmap -option "nbsp:none"(지속성을 위해 에 있는 자동 시작 스크립트에서 구현했습니다 $HOME/.config/autostart). bind '"\302\240":" "'TTY bash 쉘 비활성화를 사용하여 TTY bash 쉘을 비활성화 할 수도 있습니다 $HOME/.bashrc. NBSP(및 기타 문제가 있는 문자) 사용에 대해 경고할 수 있습니다.정력TTY의 listchars구성은 에 있습니다 $HOME/.vim/vimrc. 마지막으로 Libre Office Writer에 원하는 NBSP 문자를 추가하여 언제든지 NBSP 바로가기를 다른 키 조합으로 리디렉션할 수 있습니다(이 역시 X11에 따라 다르므로 NBSP가 차단됩니다).

마지막으로, 다양한 환경 사례가 모두 다루어지는 것은 아니지만, 여기서 언급한 내용은 다른 사례에 대한 길을 찾는 좋은 출발점이 될 것이라고 말하고 싶습니다.

관련 정보