คุณจะลบรายการเดียวออกจากเมนู“ เปิดล่าสุด” บน Mac OS X ได้อย่างไร


8

แอปพลิเคชัน Mac OS X ที่ใช้เอกสารส่วนใหญ่มีรายการเมนู---> เปิดล่าสุด ... นี่คือรายการไฟล์ล่าสุดที่คุณเปิดด้วยโปรแกรม การลบรายการทั้งหมดเป็นเรื่องง่าย เพียงแค่เลือกล้างเมนู

อย่างไรก็ตามบางครั้งคุณอาจต้องการลบรายการเดียวหรือสองรายการมากกว่าทุกสิ่งเช่นไฟล์ที่ไม่มีอยู่อีกต่อไปหรือรายการที่คุณไม่ต้องการเห็นอีกครั้ง คุณจะลบรายการเดียวออกจากรายการเปิดล่าสุดโดยไม่ลบรายการอื่นได้อย่างไร

เปิดตัวอย่างล่าสุด ...


1
ไฟล์ที่ไม่มีอยู่จะไม่แสดงในทุกแอปพลิเคชันที่ใช้เมนูเปิดล่าสุดอย่างถูกต้อง(โดยไม่เปลี่ยนค่าเริ่มต้นของโกโก้)
Daniel Beck

คำตอบ:


14

ในแอปพลิเคชันส่วนใหญ่เอกสารล่าสุดเฉพาะแอปพลิเคชันจะอยู่ในไฟล์ชื่อ:

~/Library/Preferences/com.company.application.LSSharedFileList.plist

หากต้องการแสดงไฟล์เหล่านี้ทั้งหมดใน Terminal ให้ป้อนดังต่อไปนี้:

ls -Ad Library/Preferences/* | grep LSSharedFileList

บน Mac OS X 10.6 ไฟล์เหล่านี้ (ปกติ) ในรูปแบบไบนารี

ใช้ตัวแก้ไขรายการคุณสมบัติ (เครื่องมือสำหรับนักพัฒนา Apple / Xcode 3) หรือ Xcode 4 เพื่อดูและแก้ไข

พวกเขาจะอ่านอีกครั้งเมื่อเปิดตัวแอปพลิเคชัน คุณต้องปิดแอปพลิเคชันขณะแก้ไขไฟล์นี้


ฉันเดาว่าฉันเบื่อ ...

#!/usr/bin/env bash

mode=$2
if [ -z "$mode" ] ; then
    echo "Usage:"
    echo "$0 <filename> ls       - list recent file entries in specified *.LSSharedFileList.plist"
    echo "$0 <filename> rm <idx> - remove recent file entry with given index from specified plist"
    exit 1
fi

if [ "$mode" != "ls" ] && [ "$mode" != "rm" ] ; then
    echo "second argument must be one of [ls, rm]"
    exit 1
fi

file=$1
if [ -z $file ] ; then
    echo "Need argument (recent items plist file)!"
    exit 1
fi
if [ ! -f $file ] ; then
    echo "File $file does not exist!"
    exit 1
fi

if [ "$mode" = "ls" ] ; then
    i=0
    cont=1
    while [ $cont ] ; do
        recentfilename=$( /usr/libexec/PlistBuddy -c "Print RecentDocuments:CustomListItems:$i:Name" $file 2>/dev/null )
        if [ "$?" -ne "0" ] ; then
            cont=
        else
            echo "$i - $recentfilename"
            i=$(( $i + 1 ))
        fi
    done
fi

if [ "$mode" = "rm" ] ; then
    i=$3
    if [[ $i =~ ^-?[0-9]+$ ]] ; then
        # argument is integer
        $( /usr/libexec/PlistBuddy -c "Delete RecentDocuments:CustomListItems:$i" $file )
    else
        echo "Expected integer, got $i as third argument"
        exit 1
    fi
fi

การใช้งาน:

$ ./editrecent.sh 
Usage:
./editrecent.sh <filename> ls       - list recent file entries in specified *.LSSharedFileList.plist
./editrecent.sh <filename> rm <idx> - remove recent file entry with given index from specified plist


$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist ls
0 - rcd
1 - artifactory.sh
2 - py.py
3 - iTunes Music Library.xml
4 - iTunes Library.xml
5 - gradle-proxy-support.diff
6 - DefaultGradlePropertiesLoader.java
7 - DefaultGradlePropertiesLoader-proxy.java
8 - gradle-proxy-support.patch
9 - DefaultKeyBinding.dict
10 - DefaultKeyBindings.dict

$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist rm 3

$ ./editrecent.sh Library/Preferences/com.macromates.textmate.LSSharedFileList.plist ls
0 - rcd
1 - artifactory.sh
2 - py.py
3 - iTunes Library.xml
4 - gradle-proxy-support.diff
5 - DefaultGradlePropertiesLoader.java
6 - DefaultGradlePropertiesLoader-proxy.java
7 - gradle-proxy-support.patch
8 - DefaultKeyBinding.dict
9 - DefaultKeyBindings.dict

ฮ่าฮ่าขอบคุณสำหรับสคริปต์! มีประโยชน์อย่างยิ่ง! :)
Dave Gallagher

ฉันรู้ว่ามันไม่นานมานี้ แต่ตอนนี้ฉันเพิ่งคว้าสคริปต์นี้ ขอบคุณมากที่สละเวลาเขียนมัน
Rob

@Rob คุณจะยินดี โปรดทราบว่าสิ่งนี้ถูกเขียนขึ้นเมื่อ OS X 10.6 Snow Leopard เป็นรุ่นปัจจุบันดังนั้นสิ่งต่างๆอาจเปลี่ยนแปลงไปตั้งแต่นั้นมา
Daniel Beck

บน Mavericks จำเป็นต้องออกจากระบบเพื่อให้การเปลี่ยนแปลงมีการบันทึกไว้ (ก่อนที่จะเปิด xCode อีกครั้ง)!
natanavra

2

สิ่งที่คุณต้องการไม่ใช่คุณสมบัติที่รองรับ

อย่างไรก็ตามมีคำแนะนำในการลบแต่ละรายการโดยแก้ไข/Users/YOURUSERNAME/Library/Preferences/com.apple.recentitems.plistจากนั้นออกจากระบบและกลับเข้ามาใหม่

ไฟล์นั้นมีไว้สำหรับประวัติความเป็นมาของทั้งระบบ ฉันไม่สามารถค้นหารายการพิเศษสำหรับประวัติหน้าตัวอย่างได้ สมมติว่าคุณกำลังใช้งาน Leopard หรือใหม่กว่าไฟล์ plist คือไบนารีดังนั้นตัวแก้ไขข้อความพื้นฐานจะไม่จัดการ Text Wrangler เป็นโปรแกรมแก้ไขฟรีที่สามารถจัดการกับ plists แบบไบนารีได้

ที่มา: การลบแต่ละรายการออกจากรายการ "รายการล่าสุด"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.