전임자. 일부 디렉토리의 이름이 지정되었다고 가정합니다.
absorbing
appreciate
arrive
connect
depend
drop
few
fold
littlel
popcorn
shrill
sticky
_
Windows에서는 디렉토리 앞에 넣으면 이렇게 맨 위에 오게 됩니다.
_connect
_few
_little
_shrill
absorbing
appreciate
arrive
depend
drop
fold
popcorn
sticky
그러나 Nemo 4.0.6에서 알파벳순으로 정렬하면 동일한 디렉터리가 다음과 같이 보입니다(구체적으로 Linux Mint 19.1, Cinnamon 4.0.10).
absorbing
appreciate
arrive
_connect
depend
drop
_few
fold
_little
popcorn
_shrill
sticky
따라서 Nemo의 정렬 알고리즘은 _
디렉토리 이름의 시작 부분을 완전히 무시합니다.
첫 번째 목록처럼 정렬이 작동하도록 하고 싶은데, 이를 수행할 수 있는 방법이 있습니까?
답변1
저는 이 솔루션을 Linux Mint 19.3에서 테스트했습니다.
먼저 계속해서 읽어보세요nemo 파일 정렬 순서가 /bin/ls와 다릅니다.약간의 배경.
두 가지 단계가 있습니다.
- 로케일을 기준으로 정렬되도록 Nemo를 수정합니다.
- 로케일을 편집
/usr/share/i18n/locales/iso14651_t1_common
하여 원하는 대로 정렬하세요.
1. 니모 수정하기
주요 가이드는 다음 위치에 있습니다.GitHub.
git clone https://github.com/linuxmint/nemo
이제 편집해야 합니다.nemo/libnemo-private/nemo-file.c
제거하다:
/* Files that start with these characters sort after files that don't. */
#define SORT_LAST_CHAR1 '.'
#define SORT_LAST_CHAR2 '#'
바꾸다:
static int
compare_by_display_name (NemoFile *file_1, NemoFile *file_2)
{
const char *name_1, *name_2;
const char *key_1, *key_2;
gboolean sort_last_1, sort_last_2;
int compare=0;
name_1 = nemo_file_peek_display_name (file_1);
name_2 = nemo_file_peek_display_name (file_2);
sort_last_1 = name_1 && (name_1[0] == SORT_LAST_CHAR1 || name_1[0] == SORT_LAST_CHAR2);
sort_last_2 = name_2 && (name_2[0] == SORT_LAST_CHAR1 || name_2[0] == SORT_LAST_CHAR2);
if (sort_last_1 && !sort_last_2) {
compare = +1;
} else if (!sort_last_1 && sort_last_2) {
compare = -1;
} else if (name_1 == NULL || name_2 == NULL) {
if (name_1 && !name_2)
compare = +1;
else if (!name_1 && name_2)
compare = -1;
} else {
key_1 = nemo_file_peek_display_name_collation_key (file_1);
key_2 = nemo_file_peek_display_name_collation_key (file_2);
compare = g_strcmp0 (key_1, key_2);
}
return compare;
}
그리고:
static int
compare_by_display_name (NemoFile *file_1, NemoFile *file_2)
{
const char *key_1, *key_2;
int compare=0;
key_1 = nemo_file_peek_display_name_collation_key (file_1);
key_2 = nemo_file_peek_display_name_collation_key (file_2);
compare = strcmp (key_1, key_2);
return compare;
}
그리고 다음을 교체하세요:
file->details->display_name_collation_key = g_utf8_collate_key_for_filename (display_name, -1);
그리고:
file->details->display_name_collation_key = g_utf8_collate_key (display_name, -1);
지금 열다소스 코드 저장소소프트웨어 소스에서.
그런 다음 nemo
디렉터리에서 다음 명령을 실행합니다.
sudo apt-get build-dep nemo
dpkg-buildpackage
cd .. && sudo dpkg -i *.deb
그런 다음 ctrlaltbackspaceXorg를 다시 시작하십시오.
2. 수정iso14651_t1_common
관리자로 엽니다 /usr/share/i18n/locales/iso14651_t1_common
.
바꾸다:
<U005F> IGNORE;IGNORE;IGNORE;<U005F> # 33 _
그리고:
<U005F> <RES-2>;IGNORE;IGNORE;<U005F> # 33 _
달리기sudo locale-gen
감사의 말
마이클 웹스터,가르쳐소스에서 Nemo 빌드.
이해에 도움이 된 글 2개
/usr/share/i18n/locales/iso14651_t1_common
는콩 딥. 정답은,대소 문자를 구분하지 않고 "ls"가 도트 파일을 먼저 표시하도록 만드는 방법은 무엇입니까?&LC_COLLATE를 사용하여 소문자가 대문자 앞에 오도록 정렬 순서를 지정합니다..
폴리스티렌이 답변의 이전 버전은 다음에서 찾을 수 있습니다.개정.