In Emacs, C-u C-SPC
"salta al segno e imposta il segno dalla posizione spuntata dall'anello del segno locale". C'è un modo per andare nella direzione opposta all'anello del marchio? Supponi di aver digitato C-u C-SPC diverse volte e di voler tornare a un marchio che hai visto senza andare intorno al ring.Come spostarsi avanti e indietro nell'anello segnapunti di Emacs
risposta
Non fa esattamente quello che stai chiedendo, ma potrebbe valere la pena cercare un pacchetto chiamato marker-visit.el che ti permetta di navigare tra i segni nel buffer corrente in "buffer position order" . Da quel file:
;;; Commentary:
;; This file provides a simple way to navigate among marks in a
;; buffer. C-u C-SPC is similar, but takes you haphazardly around the
;; buffer. Setting bookmarks is a lot of extra work if you just want
;; to jump around your buffer quickly; plus, you have to come up with
;; a name for every bookmark.
;; All the marks you've left while editing a buffer serve as bread
;; crumb trails of areas in the buffer you've edited. It is
;; convenient to navigate back and forth among these marks in order.
;; This file provides two methods to do just that, marker-visit-prev
;; and marker-visit-next. These two functions will take you, from
;; point, to the nearest mark in either direction. The function
;; marker-visit-truncate-mark-ring will truncate the mark ring.
;; The marks you can visit in a buffer consist of: "the mark" plus the
;; contents of the mark-ring.
mi legano [S-up] e [S-down] al marcatore-visitare-prev e marcatore-visita-next, rispettivamente.
Se davvero vuoi/devi navigare nell'ordine in cui il tuo segnaposto ha attualmente, allora potresti arrivare da qualche parte osservando le funzioni pop-to-mark-command e pop-mark e implementando le tue versioni per ruotare il segno squilla nella direzione opposta.
Sono riuscito a trovare una versione cache di Google qui: http://webcache.googleusercontent.com/search?q=cache:YGXiRhltPR4J:www.bloomington.in.us/~brutt/marker-visit.el+marker-visit. el & cd = 1 & hl = it & ct = clnk – Damyan
Ah, mi scuso - non ho capito che era difficile da trovare. Sospetto che metà degli elfi riuniti nella mia configurazione stiano raccogliendo una pensione settimanale. – Simon
Con [Segnalibro +] (http://www.emacswiki.org/emacs/BookmarkPlus), i segnalibri possono essere semplici come contrassegni: non è necessaria alcuna denominazione, ecc. E puoi scorrere tra di essi. Vedi [segnalibri autonome] (http: //www.emacswiki.org/emacs/BookmarkPlus # AutonamedBookmarks) – Drew
Hai provato browse-kill-ring
? Download it from Emacswiki, mettere in load-path e quindi aggiungere questo ai vostri emacs-conf:
(when (require 'browse-kill-ring nil 'noerror)
(browse-kill-ring-default-keybindings))
Poi, quando si preme mio vi verrà mostrato il kill-ring, cercatela come testo normale ecc . Davvero utile There is also some more practical info on emacs-fu su come utilizzare browse-kill-ring
il manuale dice questo:
La variabile
mark-ring-max
specifica il numero massimo di voci per mantenere sul ring segno. Se esistono molte voci e un altro viene premuto, viene cancellato il primo nell'elenco . Ripetendo `C-u C- 'scorre ciclicamente le posizioni attualmente sul ring.
Suggerisco di utilizzarlo per contenere la dimensione dell'anello di riferimento (a 3 o 4, il mio è attualmente 16). Quindi puoi spostarti molto più velocemente usando i prefissi.
anche:
Se si vuole tornare nello stesso posto più e più volte, l'anello di marchio potrebbe non essere sufficiente conveniente. Se è , è possibile registrare la posizione in un registro per il recupero successivo (* nota Salvataggio posizioni nei registri: RegPos.).
Ecco una funzione per farlo:
(defun unpop-to-mark-command()
"Unpop off mark ring into the buffer's actual mark.
Does not set point. Does nothing if mark ring is empty."
(interactive)
(let ((num-times (if (equal last-command 'pop-to-mark-command) 2
(if (equal last-command 'unpop-to-mark-command) 1
(error "Previous command was not a (un)pop-to-mark-command")))))
(dotimes (x num-times)
(when mark-ring
(setq mark-ring (cons (copy-marker (mark-marker)) mark-ring))
(set-marker (mark-marker) (+ 0 (car (last mark-ring))) (current-buffer))
(when (null (mark t)) (ding))
(setq mark-ring (nbutlast mark-ring))
(goto-char (mark t)))
(deactivate-mark))))
Qualche idea su un legame sensato per metterlo in relazione con il meccanismo esistente di pop-to-mark? per esempio. Se si inizia con 'C-u C-SPC C-SPC C-SPC ...' e si esegue un over-shoot, sarebbe opportuno avere qualcosa di semplice da invertire la direzione. Forse qualche consiglio precedente per 'set-mark-command' per far sì che' C-u C-SPC' agisca da interruttore tra le due funzioni? – phils
Ordinato: http://stackoverflow.com/questions/3393834/how-to-move-forward-and-backward-in-emacs-mark-ring/5117076#5117076 – phils
In seguito il mio commento a scottfrazer di very handy solution, ecco qualche consiglio che funziona in congiunzione con quella di rendere più facile per le direzioni intorno al ring segno a invertirà, senza la necessità di utilizzare una diversa associazione di chiavi per ogni direzione.
Io uso cua-selection-mode
, quindi per me C-SPC è destinata a cua-set-mark
, ma ho scritto questo come una macro in modo da consigliare a seconda di quale funzione è destinata a C-SPC, e verificato che funziona con il valore predefinito set-mark-command
.
Per disattivare, è sufficiente fornire un argomento con prefisso negativo. per esempio. C-- C-SPC
Una delle cose belle di cua-set-mark
è che dopo un primo Cu C-SPC, è possibile continuare a pop segni di riferimento successivi con un solo C-SPC, e ho incluso che il comportamento qui: Dopo una prima C-- C-SPC si può continuare a non-popping con appena C-SPC. Per invertire nuovamente la direzione e chiamare pop-to-mark
, fornire semplicemente un argomento positivo ancora una volta con C-u C-SPC.
Esistono due anelli di indicatori: uno locale per il buffer corrente e uno globale tra tutti i buffer
Per impostazione predefinita, in Icicles (in Icicle modo minore globale):
C-- C-SPC
consente di viaggio tra i marcatori localiC-- C-x C-SPC
consente di viaggio tra i marcatori globali
IOW, con un prefisso negativo arg, C-SPC
e C-x C-SPC
navigate. Senza di esso, fanno semplicemente ciò che normalmente fanno (set-mark-command
e pop-global-mark
, rispettivamente).
Navigazione funziona come segue:
- posizioni sono disponibili come candidati di completamento: il testo è quello della linea del marcatore.
- Completamento: è possibile utilizzare sottostringa, regexp, prefisso, fuzzy (vari tipi).
- È possibile scorrere tra uno dei candidati di completamento o accedere direttamente a uno di essi.
tasti disponibili durante il completamento comprendono:
up
,down
- ciclo tra i candidati in*Completions*
, senza la navigazione verso le loro posizioniC-up
,C-down
- ciclo, navigazione verso ogni posizione a turnoC-RET
,C-mouse-2
- vai direttamente al candidato corrente/cliccato (ad es. in*Completions*
)RET
,mouse-2
- come precedente (andare al candidato), ma alla fine il comando (fatto)S-TAB
- a proposito di completamento (substring/regexp)TAB
- prefisso o sfocata completa
differenza risposte precedenti, questo si fa solo esattamente ciò che è stato chiesto: il contrario di Cu C-SPC. Lo trovo il più utile.
(defun unpop-to-mark-command()
"Unpop off mark ring. Does nothing if mark ring is empty."
(interactive)
(when mark-ring
(setq mark-ring (cons (copy-marker (mark-marker)) mark-ring))
(set-marker (mark-marker) (car (last mark-ring)) (current-buffer))
(when (null (mark t)) (ding))
(setq mark-ring (nbutlast mark-ring))
(goto-char (marker-position (car (last mark-ring))))))
Confrontando la risposta scottfrazer, questo comando ha una sottile differenza di come si muove il cursore e punto, che rispecchia più accuratamente Cu C-SPC, e non richiede che il comando precedente era un unpop/pop-to-mark-comando.
Questo funziona come pura magia. – yPhil
La risposta di scottfrazer dal 2010 è estremamente simile (e risponde anche alla domanda come indicato). Ti potrebbe interessare discutere perché pensi che le differenze nella tua funzione siano un miglioramento rispetto a ciò. – phils
Sicuro. Modificato la mia risposta. –
Ecco una soluzione che ho appena trascorso spendendo troppo tempo. La differenza tra questa e le altre soluzioni è che funziona attraverso i buffer, cioè funziona sul "global-mark-ring". Il mio obiettivo era emulare la cronologia di navigazione simile a Eclipse o IntelliJ. Lo lego a M-left e M-right, ovviamente puoi scegliere chiavi diverse per questo.
(defun marker-is-point-p (marker)
"test if marker is current point"
(and (eq (marker-buffer marker) (current-buffer))
(= (marker-position marker) (point))))
(defun push-mark-maybe()
"push mark onto `global-mark-ring' if mark head or tail is not current location"
(if (not global-mark-ring) (error "global-mark-ring empty")
(unless (or (marker-is-point-p (car global-mark-ring))
(marker-is-point-p (car (reverse global-mark-ring))))
(push-mark))))
(defun backward-global-mark()
"use `pop-global-mark', pushing current point if not on ring."
(interactive)
(push-mark-maybe)
(when (marker-is-point-p (car global-mark-ring))
(call-interactively 'pop-global-mark))
(call-interactively 'pop-global-mark))
(defun forward-global-mark()
"hack `pop-global-mark' to go in reverse, pushing current point if not on ring."
(interactive)
(push-mark-maybe)
(setq global-mark-ring (nreverse global-mark-ring))
(when (marker-is-point-p (car global-mark-ring))
(call-interactively 'pop-global-mark))
(call-interactively 'pop-global-mark)
(setq global-mark-ring (nreverse global-mark-ring)))
(global-set-key [M-left] (quote backward-global-mark))
(global-set-key [M-right] (quote forward-global-mark))
- 1. Emacs: spostarsi su un determinato carattere, avanti e indietro
- 2. Come gestire il clic del mouse in CefSharp per spostarsi avanti e indietro
- 3. Utilizzo di ListIterator per spostarsi avanti e indietro su una LinkedList in Java
- 4. Tasti Indietro/Avanti e usabilità
- 5. QTableView Zoom avanti/indietro
- 6. dired indietro/avanti funzione
- 7. eseguire javascsript ciclo alternativamente avanti e indietro
- 8. Gestisci avanti e indietro in Richfaces
- 9. Editor di atomi: come saltare avanti e indietro
- 10. Informazioni sul comportamento di una parola in avanti e indietro in Emacs
- 11. Pulsanti Avanti/Indietro personalizzati Flexslider
- 12. Galleria Android zoom avanti/indietro
- 13. Sostituire ViewPager con frammento - Quindi spostarsi indietro
- 14. pulsante avanti e indietro per webview in Android. Come?
- 15. browser di destinazione indietro e pulsanti avanti singolarmente
- 16. Invio di variabili PHP avanti e indietro tra le pagine
- 17. elimina riga indietro (Emacs)
- 18. Codifica le barre in avanti e indietro in tomcat 7?
- 19. IntelliJ IDEA indietro/avanti con il mouse
- 20. Come distinguere il pulsante di navigazione indietro/avanti del browser?
- 21. Scorrere avanti e indietro attraverso i grafici matplotlib
- 22. Compatibilità avanti o indietro in Android?
- 23. Modo corretto per saltare avanti e indietro tra due rami?
- 24. Utilizzando i pulsanti Indietro e Avanti con l'API Storia
- 25. Perché ci sono due barre - avanti e indietro?
- 26. Disabilita il pulsante Indietro e Avanti su UIToolBar in UIWebview
- 27. stringa TValue <--> booleano avanti e indietro
- 28. Disabilita lo scorrimento indietro/avanti di due dita di Chrome
- 29. XCode Cronologia (indietro/avanti) Tasti di scelta rapida?
- 30. js angolare - Simula disattivazione del pulsante di navigazione avanti/indietro
In questi casi, potrebbe essere utile salvare il proprio segno nel registro, esp. se è una linea ben nota o frequentemente visitata. Non sono sicuro di passare attraverso il marchio da solo. –
Anche se questo non consente di tornare indietro, aiuta a percorrere l'intero anello più velocemente, che potrebbe già essere tutto ciò che serve in molti casi: Imposta la variabile 'set-mark-command-repeat-pop' su non-' nil', questo ti permetterà di premere solo 'C-SPC' dopo aver premuto' Cu C-SPC' una volta. Dal [manuale] (http://www.gnu.org/software/emacs/manual/html_node/emacs/Mark-Ring.html) – quazgar
Helm come sempre ha qualcosa per questo: helm-all-mark-rings mostrerà tutti segnano e consentono di utilizzare il normale completamento del timone per sfogliarli. È possibile completare il contenuto o il lino! – sandos