2013-06-20 17 views
11

Jestem na OS X 10.8.4 przy użyciu ST2. Kiedy używam klawiszy Home i End, przesuwa się widok i kursor pozostaje sam. To jest standardowe zachowanie Maca i czego bym się spodziewał.Wysublimowany tekst 2: Jak przesuwać stronę w górę/w dół bez przesuwania kursora

Jednak, gdy używam Page Up (pageup/pgup) i Page Down (pagedown/pgdn), kursor przesuwa się wraz z rzutnią. Nie jest tak, jak zachowują się inne aplikacje na Maca i chciałbym aby kursor zostawał sam dla tych kluczy.

byłem w stanie dostać tę pracę pół dodając to do moich kluczowych powiązań:

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

Kwoty są zakodowane. Wygląda na to, że viewport_extent dostanie mi wysokość widoku, ale w jaki sposób mogę użyć tego z pliku kluczy? Czy to jest nawet poprawne rozwiązanie? Czuję, że jest to bardzo dużo pracy, aby uzyskać to zachowanie.

Z góry dziękuję.

+1

To pytanie pomogło mi znaleźć sposób użycia * Page Up * i * Page Down * jako skrótów klawiaturowych w Sublime. Dzięki! – Ricardo

Odpowiedz

4

W tym celu wymaga wtyczki tekstowej. Dzięki bizoo użytkownika na forach ST, nie trzeba pisać ten sam:

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

Działa to dokładnie tak, jak ja się spodziewać.


Aktualizacja: Nie jest jasne, a także korzysta z gołą URL która mogłaby umrzeć w przyszłości. Poniżej znajduje się pełniejsze wyjaśnienie tego, co należy zrobić.

  1. Dodaj te cztery linie do Sublime Text 2> Preferencje> klawiszy - Użytkownik, wewnątrz wsporników kwadratowych, które już są w pliku:

    [ 
        { "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. ciągu Sublime Text, wybierz Narzędzia> Nowy Plugin ... opcja z paska menu.
  3. Wymień zawartość nowego pliku z tym:

    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. zapisać plik ~/Library/Application Support/Sublime Text 2/packages/ScrollLinesFixed /. Będziesz musiał utworzyć folder ScrollLinesFixed.
  5. Nie ma krok 5.
+0

To nie działa zgodnie z opisem. W którym pliku wklejasz wtyczkę?Jeśli w "Preferences> Key Bindings> User", prawdopodobnie poza listą "[...]"? Ale jest błąd składniowy, ponieważ 'amount' jest niezdefiniowany? – smci

+0

Po prostu skonfigurowałem nową instancję SublimeText 2 (2.0.2), wykonując poniższe kroki i działają one zgodnie z opisem. Czy na pewno nie używasz ST 3? –

+0

Dzięki Nick za sugestię. Minęły dwa lata, odkąd go dotknąłem, ale jeśli moja pamięć nie gra sztuczek, to ST 2.x – smci

2

tylko mój 2 ¢, ale mam kopalni konfigurację do przewijania w górę lub w dół, co następuje:

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

używam Maka, więc „super” klucz jest kluczem poleceń, który jest pierwszym klawiszem po lewej (lub prawej) spacji. Nie jestem pewien, jaki odpowiednik będzie na Windoze; może to byłby klawisz "Start" lub coś takiego. W każdym razie działa jak urok.

+0

To tylko przewinie jedną linię w górę lub w dół. Chciałem strony przewijania w oparciu o rozmiar ekranu, jak w TextEdit i każdym innym edytorze tekstu. Wtyczka z mojej odpowiedzi poniżej pozwala to zrobić. Dzięki za komentowanie! –

+1

Zmieniono "kwotę": od 1,0 do "kwoty": 30.0, która powoduje przewinięcie 30 wierszy naraz. wystarczające dla tego, czego szukałem. Dzięki! –

12

Właśnie przy użyciu Fn+up do pageup i Fn+down do stronicowania.

+0

Jestem na SublimeText 2 2.0.2 (2221) i zachowanie się nie zmieniło. Kursor przesuwa się wraz z okienkiem ekranu podczas przewijania strony w dół/w dół, chyba że poprawisz opis, który opisałem powyżej. –

Powiązane problemy