xterm에서 마우스 더블 클릭 시 파일의 확장자는 선택이 되지 않습니다.

마우스를 이용한 문자열 선택과 관련하여 Xterm은 다음과 같이 동작합니다.

마우스 클릭 : 선택 시작
마우스 오른쪽 클릭 : 선택 끝
마우스 더블 클릭 : 해당 단어 선택
마우스 세번 클릭 : 해당 줄 선택


이 때 마우스 두번 클릭 시 단어를 인식하는 기준은 보통 공백 문자이지만 xterm의 설정에 따라서 '.'(마침표), ','(쉼표), '-'(대시) 문자 등은 공백 문자처럼 단처를 가르는 문자가 됩니다.

xterm에서 이런 문자들이 한 단어처럼 인식이 되도록 하기 위해서는 charClass라는 리소스에 그 문자를 숫자나 알파벳 문자처럼 취급하라고 정하면 됩니다.


xterm을 실행할 때마다 적용하고자 한다면,

사용자의 홈디렉토리의 .Xdefaults 파일에 다음 내용을 추가합니다.
기본적으로는 해당 파일이 없으므로 처음 실행 시는 새 파일이 생성됩니다.

XTerm*charClass: 44-47:48


이 의미는 ASCII 코드표 44번째에서 47번째 문자(각각 , - .)를 48번째 문자(숫자 0)처럼 취급하라는 의미입니다.


xterm 실행 시 한 번만 적용하고자 한다면,

xterm 명령어 인자로 처리합니다.

xterm -cc 44-47:48,33:48,...


단어로 인식하던 문자를 단어 구분자로 사용하고 싶다면:

'_'(아스키 95번째 문자언더바)와 같은 문자는 기본적으로 숫자, 영문자와 같이 단어의 일부로 봅니다. 이 문자를 단어를 가르는 구분자로 사용하고 싶다면 다음과 같이 설정합니다.

XTerm*charClass: 44-47:48,95:47


참고로 다음은 단어 인식과 관련한 xterm이 인식하는 기본 문자 테이블입니다. 자세한 내용은 xterm의 MAN 페이지를 참고하세요.


/* NUL SOH STX ETX EOT ENQ ACK BEL */
32, 1, 1, 1, 1, 1, 1, 1,
/* BS HT NL VT NP CR SO SI */
1, 32, 1, 1, 1, 1, 1, 1,
/* DLE DC1 DC2 DC3 DC4 NAK SYN ETB */
1, 1, 1, 1, 1, 1, 1, 1,
/* CAN EM SUB ESC FS GS RS US */
1, 1, 1, 1, 1, 1, 1, 1,
/* SP ! " # $ % & ' */
32, 33, 34, 35, 36, 37, 38, 39,
/* ( ) * + , - . / */
40, 41, 42, 43, 44, 45, 46, 47,
/* 0 1 2 3 4 5 6 7 */
48, 48, 48, 48, 48, 48, 48, 48,
/* 8 9 : ; < = > ? */
48, 48, 58, 59, 60, 61, 62, 63,
/* @ A B C D E F G */
64, 48, 48, 48, 48, 48, 48, 48,
/* H I J K L M N O */
48, 48, 48, 48, 48, 48, 48, 48,
/* P Q R S T U V W */
48, 48, 48, 48, 48, 48, 48, 48,
/* X Y Z [ \ ] ^ _ */
48, 48, 48, 91, 92, 93, 94, 48,
/* ' a b c d e f g */
96, 48, 48, 48, 48, 48, 48, 48,
/* h i j k l m n o */
48, 48, 48, 48, 48, 48, 48, 48,
/* p q r s t u v w */
48, 48, 48, 48, 48, 48, 48, 48,
/* x y z { | } ~ DEL */
48, 48, 48, 123, 124, 125, 126, 1,
/* x80 x81 x82 x83 IND NEL SSA ESA */
1, 1, 1, 1, 1, 1, 1, 1,
/* HTS HTJ VTS PLD PLU RI SS2 SS3 */
1, 1, 1, 1, 1, 1, 1, 1,
/* DCS PU1 PU2 STS CCH MW SPA EPA */
1, 1, 1, 1, 1, 1, 1, 1,
/* x98 x99 x9A CSI ST OSC PM APC */
1, 1, 1, 1, 1, 1, 1, 1,
/* - i c/ L ox Y- | So */
160, 161, 162, 163, 164, 165, 166, 167,
/* .. c0 ip << _ R0 - */
168, 169, 170, 171, 172, 173, 174, 175,
/* o +- 2 3 ' u q| . */
176, 177, 178, 179, 180, 181, 182, 183,
/* , 1 2 >> 1/4 1/2 3/4 ? */
184, 185, 186, 187, 188, 189, 190, 191,
/* A' A' A^ A~ A: Ao AE C, */
48, 48, 48, 48, 48, 48, 48, 48,
/* E' E' E^ E: I' I' I^ I: */
48, 48, 48, 48, 48, 48, 48, 48,
/* D- N~ O' O' O^ O~ O: X */
48, 48, 48, 48, 48, 48, 48, 215,
/* O/ U' U' U^ U: Y' P B */
48, 48, 48, 48, 48, 48, 48, 48,
/* a' a' a^ a~ a: ao ae c, */
48, 48, 48, 48, 48, 48, 48, 48,
/* e' e' e^ e: i' i' i^ i: */
48, 48, 48, 48, 48, 48, 48, 48,
/* d n~ o' o' o^ o~ o: -: */
48, 48, 48, 48, 48, 48, 48, 247,
/* o/ u' u' u^ u: y' P y: */
48, 48, 48, 48, 48, 48, 48, 48