Satırın başına ve sonuna “Ana Sayfa” ve “Son” u yeniden eşleyin


326

Hesaplama zamanımın çoğu Linux'ta (zaman zaman Windows'taki) harcanıyor. Bu platformlarda Homeve Endtuşları evrensel olarak mevcut çizginin başına veya sonuna atlar.

Hayatım boyunca tek bir Apple bilgisayarı kullanmaya alışmaya başladım, ancak bu anahtarlar belgenin başlangıcına ve sonuna bağlı gibi göründüğünden hala sinir bozucu ve satır için hiçbir anahtar yok gibi görünüyor temelli eylemler.

Benim sorum:

  1. Satırın başlangıcı ve bitişi için kaçırdığım anahtar kelimeler var mı? (Genellikle bir Terminal, Chrome ve LibreOffice kullanıyorum)
  2. Bu tuşların işlevlerini aşina olduğum işlevlere yeniden bağlamanın bir yolu var mı? Bana pek yararı olmayan belgeye dayalı versiyonlardan vazgeçmeye razıyım.

Ayrıca iki uyarı:

  1. Sistemdeki tek kullanıcı ben değilim. Kullanıcı ayarlarımın diğer insanların deneyimini bozmaması iyi olurdu. Bu mümkün değilse, muhtemelen en güçlü tercihime sahip olduğumu düşünüyorum!
  2. Birden çok dil kullanıyorum ve klavye düzenleri arasında geçiş yapıyorum, bu nedenle herhangi bir çözümün birden fazla klavye düzeni arasında geçiş yaparken bile çalışması bekleniyor.

1
Bir çözüm bulup kendi soruma cevap verirken biterken daha kolay veya çok yönlü çözümlere açığım. Ayrıca bunu keşfetme süreci açık değildir. Örneğin, daha fazla anahtar remap etmek istersem, anahtar kodlarını ve işlem adlarını nereden buluyorsunuz? İlgili bilginiz varsa cevap eklemek için çekinmeyin!
Caleb

Yanıtlar:


304

(Sarılmış) satırların başına veya sonuna gitmek için varsayılan kısayollar ve . ve veya Ave Eaçılmamış çizgilerin (veya paragrafların) başına veya sonuna gidin. ve kelimelerle geriye / ileriye doğru hareket edin ve bunların hepsi Shiftilgili hamleler sırasında seçim yapmak için tutma ile uyumludur .

Şunun ~/Library/KeyBindings/gibi bir özellik listesi oluşturup kaydederek evinizi yeniden kapatabilir ve sonlandırabilirsiniz DefaultKeyBinding.dict:

{
    "\UF729"  = moveToBeginningOfLine:; // home
    "\UF72B"  = moveToEndOfLine:; // end
    "$\UF729" = moveToBeginningOfLineAndModifySelection:; // shift-home
    "$\UF72B" = moveToEndOfLineAndModifySelection:; // shift-end
}

OS X'te metin düzenleme için kullanılan tuş ciltlerinin çoğu, içinde tanımlanmıştır /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict.

Değişikliklerin yapılması, yeniden uygulama gerektirir. DefaultKeyBinding.dict, Xcode'un bazı eski sürümleri (6.3.1 sürümüyle çalışır), Terminal ve birçok çapraz platform uygulamasıyla yoksayılır.

Özelleştirilebilir tuş bağlamaları hakkında daha fazla bilgi için Kakao Metin Sistemi ve web siteme bakın .

Terminalin tuş bağlantıları, Tercihler> Ayarlar> Klavye'de özelleştirilebilir. \033OHsatırın başına ve satırın \033OFsonuna gider .

Eclipse’de, tuş bağlayıcıları Tercihler> Genel> Tuşlar içinde değiştirilmelidir. Satır Başı ve Satır Sonu komutları için varsayılan bağları değiştirmeniz gerekir (⌘ ← ↖ ve ⌘ → ↘ ile değiştirin). Çalışmak üzere seçim yapmak için, Satır Seçimi Seç ve Satır Sonunu Seç seçeneğini de değiştirin .

Not: Sen gerekebilir çıkış yapıp tekrar giriş için ~/Library/KeyBindings/DefaultKeyBinding.dictdeğişikliğin etkinleşmesi.


1
Anahtar eşlemeleri hakkında faydalı bilgiler - Bunları (ticari) BetterTouchTool ile kullandım, bu cevaba bakınız .
RichVel

3
Bu, deneyimimdeki çoğu uygulamada çalışmıyor. Karabina-Elements kullanmak daha iyidir.
Timmmm

3
Bu harika çünkü Terminal, iTerm2, Chrome, Sublime & Outlook'ta çalışıyor. Alternatif (Karabina) daha az iyidir çünkü bu “Home” u Command + LeftArrow ile eşleştirir, ki aslında Terminal'de pencereleri değiştirir. .Dict dosyasını kaydettikten sonra tüm uygulamaları yeniden başlatmayı unutmayın.
Sheppard

1
Bu vim ile çalışmaz
MohitC

2
Bu ayar benim için harici klavye bağlıyken Mac OS Mojave'de çalışıyor.
Jdhao

106

Ben şu anda Lion 10.7.4'teyim ve bazı garip sebeplerden dolayı düzenleme ~/Library/KeyBindings/DefaultKeyBinding.dictbenim için işe yaramadı.

Ben bulduk KeyRemap4MacBook (şimdi adı verilir Sistem Tercihleri addon Karabiner ) gerçekten iyi çalışıyor ve aynı zamanda herhangi bir metin dosyaları düzenlemek zorunda kalmadan, onunla tuşları çeşitli yeniden eşleştirebilirsiniz. Sayfa yukarı / aşağı sayfa tuşlarını değiştirmek, böylece imleç de sayfa yukarı / aşağı yönünü takip eder.

Eklentiyi indirin ve Sistem Tercihleri ​​panelinde, For PC Usersbölüme göz atın ve kontrol edin Use PC Style Home /End.

Not: İlkini (Change Home to Command+Left)seçmişim (Change Home to Control+A)gibi seçtim, eğer hat sarılmışsa, ev beni sarılmış hattın başına götürecek, birkaç satır üste götürmek yerine, beni geçerli satırın başına götürecekti.

KeyRemap4MacBook


9
Karabiner harika ve aynı zamanda açık kaynak
Jedidja

2
10.10.5 ile diğer öneriler işe yaramaz gibi görünüyor, ancak Karabiner (KeyRemap4MacBook'un yeni adı - tüm Mac ürünlerinde çalışıyor) iyi çalışıyor ve değişikliklerin etkili olması için yeniden başlatılması gerekmiyor. Bu Mac noob için son derece yararlı; umarım başkaları da yararlanabilir.
Ralph J

1
Bugün itibariyle, "Karabiner şu anda macOS Sierra üzerinde çalışmıyor."
james.garriss

2
@ james.garriss Karabiner-Elements'e bir yolculuk verin - aynı yazarı Sierra'yı desteklemek için sıfırdan yeniden yazılmasına rağmen (hala geliştirilmekte olduğu için oldukça zorlu kenarlar) - github.com/tekezo/Karabiner-Elements
jklp

5
@jklp Maalesef Apple genişletilmiş klavyesindeki Giriş ve Bitiş tuşlarını yeniden açmak için gereken işlev henüz Karabiner Elements'ta mevcut değil. Konsolda çalışırken şahsen Ctrl-a, Ctrl-e için kas belleğe sahip görünüyor, ancak Sublime gibi bir GUI uygulamasında çalışırken hatırlamak çok zor. Yüce için (özellikle) bir çözüm var, ancak: coderwall.com/p/upolqw/…
Ville

43

Sayesinde bu makalede , ben yeniden bağlamak için nasıl düşündüm Homeve Endklavye düzenleri arasında çalışır bir kullanıcı bazında dayalı eylemler satır anahtarları.

Eşlenecek anahtar kodları ve yeni komutları içeren bir sözlük dosyası oluşturmanız gerekir, ancak önce bir Terminal açıp çalıştırarak bunun yerleştirileceği klasörün bulunduğundan emin olun:

$ mkdir -p ~/Library/KeyBindings

Sonra dosyayı oluşturun veya düzenleyin ~/Library/KeyBindings/DefaultKeyBinding.dict. Daha önce mevcut değilse, aşağıdaki bölümün tamamını ekleyin. Varsa, bloğun içine dört yeni satır ekleyin.

{
    "\UF729"  = "moveToBeginningOfLine:";
    "\UF72B"  = "moveToEndOfLine:";
    "$\UF729" = "moveToBeginningOfLineAndModifySelection:";
    "$\UF72B" = "moveToEndOfLineAndModifySelection:";
}

Ayarları etkinleştirmek için kullanıcı oturumunuzu kapatmanız ve tekrar giriş yapmanız gerekir.

Bunun imleci hareket ettirmenin normal hareketini ve imleç hareketi sırasında seçim yapmak için Shift+ Home/ Endkombinasyonunu kapsadığını unutmayın .


12

OS X Sierra kullanıyorum ve ~/Library/KeyBindings/DefaultKeyBinding.dictdiğer kullanıcılar tarafından önerilen çözüm kısmen çalıştı: TextEdit gibi bazı uygulamalar şimdi istenen davranışa sahip, ancak diğer uygulamalar yok. Google Chrome ve Slack, DefaultKeyBinding.dictdosyaya saygı göstermeyen iki tanesi .

Kalan uygulamaları düzeltmek için, uygulamaya özgü klavye kısayolları bağlama ve OS X'in yerel kısayolları ve öğelerini oluşturmak için BetterTouchTool kullandım . BetterTouchTool ücretsiz değil, ancak 45 günlük deneme süresi var.HomeEndCtrl+ACtrl+E

Bunu yapmak için:

  1. BetterTouchTool'u yükleyin ve başlatın
  2. Hareketler> Klavye sekmesine gidin
  3. "Uygulama Seç" in altında, tıklayın +ve düzeltmek istediğiniz uygulamayı seçin.
  4. "Yeni Kısayol Ekle" yi tıklayın Home, "kayıt kısayolu" alanına anahtarı atayın ve "Diğer klavye kısayolunu tetikle" yi Ctrl + A olarak ayarlayın. EndVe Ctrl + E için tekrarlayın .
  5. İşiniz bittiğinde panel şöyle görünmeli:BetterTouchTool paneli
  6. BetterTouchTool'un Gelişmiş Ayarları altında, başlangıçta çalışmasına izin verin.

Not: BetterTouchTool uygulamasından çıkmayın, aksi halde tuşa basılmasını durduramaz. Sadece penceresini kapatın ve arka planda çalışmaya devam etmelidir.


Teşekkürler - El Capitan'da daha önce BetterTouchTool'un parasını ödediğim için kullandım ve Chrome, Slack ve diğer uygulamalarla gayet iyi çalışıyor.
RichVel

9

Özel ayarlarla harika KeyRemap4MacBook kullanıyorum .

Home / End'i çoğu uygulamada düzeltir ve iTerm2'yi mahvetmez.

Gönderen https://gist.github.com/lhotari/6134223181439b9ed0a1

<?xml version="1.0"?>
<!-- ~/Library/Application Support/KeyRemap4MacBook/private.xml -->
<!-- Custom keyboard mappings for MBP using https://pqrs.org/macosx/keyremap4macbook/ -->
<root>
    <item>
        <name>Lari's PC Style Home/End</name>
        <appendix>(Change Home to Command+Left)</appendix>
        <appendix>(Change End to Command+Right)</appendix>
        <appendix></appendix>
        <appendix>{{ PC_STYLE_BINDINGS_IGNORE_APPS_DESCRIPTION }}</appendix>
        <identifier>lari.remap.pclikehomeend</identifier>
        <block>
            <only>DREAMWEAVER</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::HOME, ModifierFlag::SHIFT_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::END,  ModifierFlag::SHIFT_L</autogen>
        </block>
        <block>
            <only>BLUEFISH,WORD,EXCEL,POWERPOINT</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::HOME</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::END</autogen>
        </block>
        <!--
        <block>
            <only>EMACS, TERMINAL, X11, ECLIPSE</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::A, ModifierFlag::CONTROL_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::E, ModifierFlag::CONTROL_L</autogen>
        </block>
         -->
        <block>
            <not>{{ PC_STYLE_BINDINGS_IGNORE_APPS }}</not>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::CURSOR_UP,    ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, KeyCode::CURSOR_UP,    ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::CURSOR_DOWN,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, KeyCode::CURSOR_DOWN,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME,             KeyCode::CURSOR_LEFT,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,              KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L</autogen>
        </block>
    </item>
</root>

Yukarıdaki bağlantıya göre Sierra ile çalışmak üzere güncellenmedi.
james.garriss

Bu araç Karabiner olarak değiştirildi ve görünüşe göre OS X El Capitan 10.11, Sierra 10.12 ve Yüksek Sierra 10.13 ile çalışıyor.
RichVel

7

Aşağıdakiler için iterm2ve buradanzsh alıntılarla faydalı buldum :

iTerm > Preference. Gidin profiles tab > Keys. Sonra ' +tuşları listesi, basın altındaki düğmeye Home(veya Fn+left arrowelma kablosuz klavye üzerinde) kapsamında Actionseçin Send Escape Sequenceve sonra yazın[1~

Escape tuş dizisi için Endtuşla tekrarlayın [~4.

Eğer zsh kullanıyorsanız, şunu da yapın:

1) Aşağıdakileri ~/.zshrcdosyanıza yerleştirin.

bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line

2) source ~/.zshrcHerhangi bir açık terminalde çalıştırın .


iTerm2 ayrıca bu davranışı içeren bir "Doğal metin düzenleme" anahtar eşleme ön ayarına sahiptir.
Matt M.

Değiştirilmesi gerekiyor bindkey "^[[~4" end-of-line. 4
Ty'nin

@ Teşekkürler, ama nedenini açıklayabilir misiniz? Orijinal kaynak, github.com/reenhanced/zsh-config/blob/master/lib/… ve github.com/ThiefMaster/zsh-config/blob/master/zshrc.d/… kullanın "^ [[4 ~ "
RationalDev

Bu kaçış dizilerinde iyi değilim ama benim için imleci satır sonuna kadar hareket ettirirken ^[[4~ekosumdan çıkarım . 4^[[~4
Ty.

@Ty İlginç. Nedenini bulmak için bazı araştırmalar yaptım, ancak yalnızca örneklerini bulabildim ^[[4~. Ne tür bir klavye ve karakter kodlaması kullanıyorsunuz, belki bu bir fark yaratır?
RationalDev,


5

Bunu Karabiner Elemanları kullanarak başardım .

~/.config/karabiner/karabiner.jsonJSON dizisinin kurallar bölümünü aşağıdaki koddan güncellemeniz gerekir . Bunu yapmak, ev / bilgisayar tuşlarını, bilgisayar / pencerelerde çalıştıkları şekilde çalışmak için yeniden eşler.

{
  "rules": [
    {
      "description": "change home key to command + left_arrow",
      "manipulators": [
        {
          "from": {
            "key_code": "home"
          },
          "to": [
            {
              "key_code": "left_arrow",
              "modifiers": [
                "left_command"
              ]
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "change home key to command + left_arrow while presing shift (selection)",
      "manipulators": [
        {
          "from": {
            "key_code": "home",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_arrow",
              "modifiers": [
                "left_command",
                "left_shift"
              ]
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "change end key to command + right_arrow",
      "manipulators": [
        {
          "from": {
            "key_code": "end"
          },
          "to": [
            {
              "key_code": "right_arrow",
              "modifiers": [
                "left_command"
              ]
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "change end key to command + right_arrow while presing shift (selection)",
      "manipulators": [
        {
          "from": {
            "key_code": "end",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          },
          "to": [
            {
              "key_code": "right_arrow",
              "modifiers": [
                "left_command",
                "left_shift"
              ]
            }
          ],
          "type": "basic"
        }
      ]
    }
  ]
}

ayrıca bakınız: github gist

görüntü tanımını buraya girin


1

@ Lri'nin cevabı harika ( çok teşekkür ederim; bu beni çıldırtıyordu ), ama sonunda biraz değişiklik yaptım.

(Bu cevapta, tuşlar için appley olmayan isimler kullanıyorum, bu yüzden command = super ve option = alt.)

Süper sol ve kullanılan süper sağa aslında eşlenmesi moveToLeftEndOfLineve moveToRightEndOfLine. Kullanılması moveToBeginningOfLineve moveToEndOfLine, @Lri yaptığı gibi, tutarsız davranışlara neden olabilir.

Appley kısayolları ile kelimenin tam anlamıyla başkalarının eklediğim kısayollar arasında birçok farklılıklar var. Örneğin, ctrl-left ve ctrl-right'in kelimeler arasında hareket etmesi beklenir; alt sol ve alt sağ değil. Bunun ayrıntılı olduğunu düşünmüyorum, ancak şu anda benim için oldukça iyi çalışıyor. Kullanıcının kesme, kopyalama ve yapıştırma işlemlerini düzeltmek için kontrolü ve süper tuşları zaten değiştirdiğini varsaydım.

~/Library/KeyBindings/DefaultKeyBinding.dict:
{
    "\UF729"   = moveToLeftEndOfLine:; // home
    "\UF72B"   = moveToRightEndOfLine:; // end
    "$\UF729"  = moveToBeginningOfLineAndModifySelection:; // shift-home
    "$\UF72B"  = moveToEndOfLineAndModifySelection:; // shift-end

    "@\UF700"  = moveUp:;  //super-up
    "@\UF701"  = moveDown:;  //super-down
    "@\UF702"  = moveWordLeft:;  //super-left
    "@\UF703"  = moveWordRight:;  //super-right

    "@$\UF700" = moveUpAndModifySelection:;  // super-shift-up
    "@$\UF701" = moveDownAndModifySelection:;  // super-shift-down
    "@$\UF702" = moveWordLeftAndModifySelection:;  // super-shift-left
    "@$\UF703" = moveWordRightAndModifySelection:;  // super-shift-right

    "@\UF728"  = deleteWordForward:;  // super-delete
    "@\U7F"    = deleteWordBackward:;  // super-backspace
}

-3

Ayrıca klavye tuşlarını yeniden boyutlandırabilir, fare ve izleme panelinizi her türlü harika yolla özelleştirebilirsiniz, ayrıca http://blog.boastr.net/ adresinde bulunan ücretsiz BetterTouchTool ile . Giriş cihazlarınızın çalışmalarını özelleştirmek için mükemmel bir çözüm!


2
Orijinal sorunu çözmek için belirtilen yazılımı nasıl kullanacağınızla ilgili talimatlar ile cevabınızı genişletebilir misiniz ?
grg

"Ücretsiz Bira" ya da "Özgürlük" duyularında özgür değil. 45 günlük deneme sürümü, kapalı kaynaklı, ücretli yazılım.
Wyatt8740
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.