首頁>Apple>source

macOS的文字輸入系統长期以来一直受支援通過 ~/Library/KeyBindings/DefaultKeyBinding.dict自定義鍵盤快捷键 .我已经成功使用了多年,使文字編輯更像Emacs,但是有一个我从未能够使用的功能: yankAndSelect: 方法.它从来没有在我的杀戮圈中迴圈.它总是only拖拉最後杀死的物品.我正在尋找帮助使其工作。

這是我測試的方式.首先,我設置 NSTextKillRingSize 在终端中使用此命令:

defaults write -g NSTextKillRingSize -int 20

(我也尝試過 -string 代替 -int 在上面的命令中,但在行為上没有任何區別。)接下来,我从 DefaultKeyBinding.dict中删除了所有內容 檔案,仅保留以下內容:

{
  "^y" = (yankAndSelect:);
}

請註意,我將controlk繫結到其預設的文字系統操作(即终止到行尾).最後,我重新啟動,只是為了確保没有任何意外持續。

基於许多来源,例如選擇器列表< / a>由2006年的Jacob Rus撰寫,Brett Terpstra的键繫結,並在網路上隨機訪問其他人的頁面,看来應该出現以下行為(如Brett Terpstra所述):

  1. 打開TextEdit(如果已经打開,請重新啟動)
  2. 键入一行文字,將游標移至该行的開頭,键入controlk
  3. 用不同的文字寫另一行,然後重複步骤2
  4. 再做一次
  5. 在空白行上,键入controly.這應该粘贴您杀死的最後一行
  6. 再次键入controly,粘贴的文字應替換為您杀死的第二行
  7. 再次,您應该看到第一行.连續的重複將遍歷杀死環。

這是 not 我使用時会發生什麼.取而代之的是,步骤6不会粘贴倒數第二个杀死,而是始终粘贴最近的(第三个)杀死.好像根本就没有杀戮之環,而 yankAndSelect: 总是只拉最近的一次杀人。

這是在每个系統(macOS 10.13和几乎新的10.14 VM)以及每个遵循我尝試過的DefaultKeyBinding.dict(不仅是TextEdit)的應用程式中100%可重複的行為。

What more must be done to get yankAndSelect: 穿過杀戮圈

最新回復
  • 5月前
    1 #

    更新:似乎在某些版本的macOS上,無法全域性設置配置;請參阅第19頁上的"全域性設置".而是使用 defaults write com.apple.TextEdit NSTextKillRingSize -string 6 (取代 com.apple.TextEdit 与所需的應用程式和 6 (具有所需的终止環大小)以针對每个應用进行設置.此外,似乎 NSTextKillRingSize 不得大於16,否則將無法正常工作。


    原始答案:

    問题似乎在於 defaults如何 CLI處理全域性預設域.具體来說,您想要寫入正確的host的全域性預設值(即您的預設值),預設情况下似乎不会發生. (我仍然不完全了解所有這些工作原理的複雜性。)要實現此目的,請替換您当前的 defaults write 使用以下命令:

    defaults -currentHost write -g NSTextKillRingSize -string 6
    

    這對我来說適用於Big Sur 11.1。

相似問題

  • error:對於Safari(MacOS Mojave)以外的瀏覽器,網際網路响應速度變慢
  • bash:通過AppleScript的"執行外壳程式指令碼"使用某些外壳程式命令時,輸出為空