2013-06-20 6 views
11

Sono su OS X 10.8.4 utilizzando ST2. Quando uso i tasti Home e Fine, la finestra si sposta e il cursore viene lasciato in pace. Questo è il comportamento standard del Mac e cosa mi aspetterei.Testo sublime 2: Come pagina su/giù senza spostare il cursore

Tuttavia, quando utilizzo Pagina su (pagina/pgup) e Pagina giù (pagina di paging/pgdn), il cursore si sposta insieme al viewport. Questo non è il modo in cui le altre app Mac si comportano, e mi piacerebbe che il cursore fosse lasciato in pace anche per queste chiavi.

Sono stato in grado di ottenere questo mezzo di lavoro aggiungendo questo ai miei combinazioni di tasti:

[ 
    { "keys": ["pageup"], "command": "scroll_lines", "args" : {"amount": 30.0} }, 
    { "keys": ["pagedown"], "command": "scroll_lines", "args" : {"amount": -30.0} } 
] 

Tuttavia, gli importi ci sono hard-coded. Sembra che viewport_extent mi raggiunga l'altezza del viewport, ma come posso utilizzarlo dall'interno del file dei collegamenti dei tasti? È questa anche la soluzione corretta per questo? Mi sembra che ci sia un sacco di lavoro da fare per ottenere questo comportamento.

Grazie in anticipo.

+1

Questa domanda mi ha aiutato a trovare come usare * Pagina su * e * Pagina giù * come tasti di scelta rapida su Sublime. Grazie! – Ricardo

risposta

4

Per fare ciò è necessario un plug-in di testo. Grazie alla bizoo utenti sui Forum ST, non c'è bisogno di scrivere da soli:

http://www.sublimetext.com/forum/viewtopic.php?f=3&t=12793

Questo funziona esattamente come mi aspetto.


Update: Questo non è chiaro, e utilizza anche un URL nuda, che, concettualmente, potrebbe morire in futuro. Quindi ecco una spiegazione più completa di ciò che devi fare.

  1. Aggiungi queste quattro righe per Sublime Text 2> Preferenze> combinazioni di tasti - l'utente, all'interno di qualsiasi parentesi quadre che si trovano già nel file:

    [ 
        { "keys": ["ctrl+up"], "command": "scroll_lines_fixed", "args": {"amount": 1.0 } }, 
        { "keys": ["ctrl+down"], "command": "scroll_lines_fixed", "args": {"amount": -1.0 } }, 
        { "keys": ["pageup"], "command": "scroll_lines_fixed", "args" : {"by": "pages", "amount": 1.0 } }, 
        { "keys": ["pagedown"], "command": "scroll_lines_fixed", "args" : {"by": "pages", "amount": -1.0 } } 
    ] 
    
  2. All'interno Sublime Text, selezionare Strumenti> Nuovo Plugin ... opzione dalla barra dei menu.
  3. sostituire il contenuto del nuovo file con questo:

    import sublime, sublime_plugin 
    
    class ScrollLinesFixedCommand(sublime_plugin.TextCommand): 
        """Must work exactly as builtin scroll_lines command, but without moving the cursor when it goes out of the visible area.""" 
        def run(self, edit, amount, by="lines"): 
         # only needed if one empty selection 
         if by != "lines" or (len(self.view.sel()) == 1 and self.view.sel()[0].empty()): 
         maxy = self.view.layout_extent()[1] - self.view.line_height() 
         curx, cury = self.view.viewport_position() 
         if by == "pages": 
          delta = self.view.viewport_extent()[1] 
         else: 
          delta = self.view.line_height() 
         nexty = min(max(cury - delta * amount, 0), maxy) 
         self.view.set_viewport_position((curx, nexty)) 
         else: 
         self.view.run_command("scroll_lines", {"amount": amount}) 
    
  4. Salvare il file ~/Library/Application Support/Sublime Text 2/Packages/ScrollLinesFixed /. Dovrai creare la cartella ScrollLinesFixed.
  5. Non c'è nessun passo 5.
+0

Questo non funziona come descritto. In quale file incolli il plug-in?Se in "Preferences> Key Bindings> User', presumibilmente fuori dalla lista' [...] '? Ma poi c'è un errore di sintassi perché 'amount' non è definito ?? – smci

+0

Ho appena creato una nuova istanza di SublimeText 2 (2.0.2) usando questi passaggi, e stanno funzionando come descritto. Sei sicuro di non usare ST 3? –

+0

Grazie Nick per il suggerimento. Sono passati due anni da quando l'ho toccato, ma a meno che la mia memoria non stia giocando a scherzi, è ST 2.x – smci

2

Solo il mio 2 ¢, ma io ho installato la mia a scorrere verso l'alto o verso il basso con il seguente:

{ "keys": ["super+up"], "command": "scroll_lines", "args": {"amount": 1.0} }, 
{ "keys": ["super+down"], "command": "scroll_lines", "args": {"amount": -1.0} } 

io uso un Mac, in modo che il "super" la chiave è la chiave di comando, che è la prima chiave a sinistra (o destra) della barra spaziatrice. Non sono sicuro di quale sarebbe l'equivalente su Windoze; forse sarebbe la chiave "Start" o qualcosa del genere. Comunque, funziona come un fascino.

+0

Questo però farà scorrere solo una riga verso l'alto o verso il basso. Volevo una pagina di scorrimento basata sulla dimensione del viewport, come in TextEdit e in qualsiasi altro editor di testo. Il plugin della mia risposta qui sotto ti consente di farlo. Grazie per il commento, però! –

+1

Modificato "importo": da 1.0 a "importo": 30.0 che ottiene lo scorrimento di 30 righe alla volta. sufficiente per quello che stavo cercando. Grazie! –

12

Utilizzare semplicemente Fn+up a pageup e Fn+down per eseguire il pagingown.

+0

Sono su SublimeText 2 2.0.2 (2221) e il comportamento non è cambiato. Il cursore si sposta insieme al viewport quando si esegue il pageup/down, a meno che non si effettui la correzione che descrivo sopra. –