¿Cómo se elimina un solo elemento del menú "Abrir reciente" en Mac OS X?


8

La mayoría de las aplicaciones de Mac OS X basadas en documentos tienen un elemento de menú Archivo ---> Abrir reciente ... Esta es una lista de archivos recientes que ha abierto con el programa. Quitar todos los artículos es fácil; simplemente seleccione Borrar menú .

Sin embargo, a veces es posible que solo desee eliminar uno o dos elementos en lugar de todo, como un archivo que ya no existe o uno que nunca desea volver a ver. ¿Cómo se elimina un solo elemento de la lista Abrir reciente, sin eliminar nada más?

Abrir reciente ... ejemplo


1
Los archivos que ya no existen no se muestran en todas las aplicaciones que implementan correctamente el menú Abrir reciente (al no cambiar el valor predeterminado de Cocoa).
— Daniel Beck

Respuestas:


14

En la mayoría de las aplicaciones , los documentos recientes específicos de la aplicación están en un archivo llamado:

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

Para enumerar todos estos archivos en la Terminal, ingrese lo siguiente:

ls -Ad Library/Preferences/* | grep LSSharedFileList

En Mac OS X 10.6, estos archivos están (generalmente) en formato binario.

Utilice el Editor de lista de propiedades (Herramientas de desarrollo de Apple / Xcode 3) o Xcode 4 para verlos y editarlos.

Se vuelven a leer cuando se inicia la aplicación, no mientras se está ejecutando. Debe cerrar la aplicación mientras edita este archivo.


Supongo que estaba aburrida ...

#!/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

Uso:

$ ./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

Ja, ja, gracias por el guión! ¡Extramadamente útil! :)
— Dave Gallagher

Sé que fue hace un tiempo, pero ahora estoy agarrando este guión. Muchas gracias por tomarse el tiempo para escribirlo.
— Rob

@ Rob De nada. Tenga en cuenta que esto se escribió cuando OS X 10.6 Snow Leopard era la versión actual, por lo que las cosas podrían haber cambiado desde entonces.
— Daniel Beck

¡En Mavericks es necesario cerrar sesión para guardar los cambios (antes de volver a abrir xCode)!
— natanavra

2

Lo que está pidiendo no es una función compatible.

Sin embargo, hay instrucciones que sugieren que es posible eliminar elementos individuales editando /Users/YOURUSERNAME/Library/Preferences/com.apple.recentitems.plist, luego desconectando y volviendo a iniciar sesión.

Sin embargo, ese archivo es para el historial de todo el sistema; No pude encontrar un plist específicamente para el historial de Vista previa. Suponiendo que esté ejecutando Leopard o más reciente, el archivo plist es binario, por lo que un editor de texto básico no lo manejará. Text Wrangler es un editor gratuito que puede manejar listas binarias.

Fuente: Eliminar elementos individuales de la lista "Elementos recientes"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.