2012-07-05 47 views
0

的Emacs的n00b這裏,我撥弄了一下它在圖形模式下,到目前爲止,我發現它的偉大。我想給終端版本一個嘗試,發現有一些令人討厭的行爲差異,特別是在移位選擇方面。不同的選擇行爲(23)

在圖形模式下,我可以結合使用箭頭鍵,控制鍵(選擇整個單詞)或原點或結束鍵(選擇整個/大部分)的移位選擇(即保持移位來設置標記)一條線)。

在終端模式下,按鍵可以正常工作(我可以在按住shift鍵並按住箭頭鍵的同時選擇區域,C左/右允許我跳轉整個單詞,起源和結束將我帶到我想要的地方但我不能合併它們(不能通過按住shift和C-arrowing選擇整個單詞,或者選擇帶shift-end或shift-origin的行的剩餘部分)。

我還發現,雖然這在窗口模式下做C-退格並沒有在控制檯中工作(即沒有刪除整個單詞),雖然我尋找一個解決方案後瞭解M-退格。

我盡我所能地搜索,但無法找到如何讓終端版本像圖形版本一樣行事......很多人似乎都在問關於Emacs的換檔選擇的問題,但沒有一個有相同的問題......有人可以解釋這些行爲差異來自哪裏嗎?

在此先感謝。

*雖然,按住shift,如果我下去(用箭頭鍵)來選擇整行,我不能再上去不選他們(「未定義」)。

[編輯/]好了,顯然這來自於一個事實,我的終端不具有相同的快捷鍵爲圖形的Emacs一樣。很公平。我看到一對夫婦的解決方案在這裏:

  • 習慣默認的Emacs快捷鍵
  • 填充我的.emacs全球設置鍵的。雖然我試圖
     
    (fset 'select-to-end 
    [(kbd "C-<spc><end>")]) 
    (global-set-key (kbd "S-<end>") 'select-to-end) 
    
    但我想讓它-_-它不工作
+0

你可能會遇到糟糕的終端/ termcap設置。你在什麼操作系統,什麼是'$ TERM'? – 2012-07-05 08:58:34

+0

我的操作系統是Crunchbang Statler(基於Debian),$ TERM是xterm。我剛剛發現,實際上,因爲我在控制檯中運行Emacs,問題僅僅在於我的控制檯沒有用於在文本中移動的相同快捷鍵......我只是發現,我也可以移動到開始/用Ca/Ce結尾,並選擇,直到緩衝區的開始/結束與Ma/Me保持轉換。現在我只需要選擇直到線的開始/結束......並且(按住shift鍵)Ca/Ce不起作用(Cse必然會在我的終端中垂直分離,而Csa只是沒有做任何可見的事情) 。 – Peniblec 2012-07-05 09:31:59

回答

1

簡短的回答是:「如果你使用不同的按鍵很高興,這可能是更容易」。就我個人而言,我對我的鍵盤綁定和配置有點神經質,所以我很少用這個。特別是當emacs模式覆蓋你的綁定時,這是令人沮喪的。 (我不知道你是否發現global-set-key確實意味着「讓我的鍵盤上的任何人在宇宙中戳記」)。

對你的問題的更長的回答是「鏈中的某個人忽略了你的控制字符,所以你需要弄清楚它是誰,修復它,然後重複「。對於你在這裏討論的鍵盤綁定 - C-S-<arrows> - 你絕對可以得到這個工作;如果你想要像\C-~,你將有一個困難的時間。 (問題是,一些綁定並沒有使傳統終端的意義,所以你基本上都要使用非標準組控制代碼發送組合鍵,然後教每個程序來識別它。這通常是一個地方來的termcap中,因爲它是關於關鍵事件教學計劃的共同語言)

下面是步驟我通常採取:

  • 開始你的終端。你可以使用\C-v,然後按一個鍵來插入文字擊鍵(至少在bash中) - 首先用C向左,S向左和C向左進行。確認你得到三個不同的控制代碼。您需要調查(1)您的readline設置,(2)您的終端程序設置或(3)termcap設置。由於TERMxterm,因此termcap 應爲。我不知道你在使用什麼終端程序,但它可能有自己的密鑰配置。 (例如,我使用Mac並使用iTerm2,這通常是我的第一站)。如果您打算花時間在終端上,您肯定應該花些時間閱讀readline manual並使用您的.inputrc位。
  • 這條鏈很短:接下來是emacs。您可以在emacs中使用\C-q來做同樣的事情\C-v在bash中做的事情,或者使用\C-h k來找出默認綁定是什麼。再次,從確保emacs看到您感興趣的組合的不同關鍵事件開始。如果不是,您可能首先需要在site-lisp目錄中查看term/xterm.el並根據自己的喜好進行修改。

如果您使用的是tmuxscreen,他們也可以接受這一點,並且通常可以被馴服。查找這些問題的過程與bash相同 - 使用\C-vman tmux來弄清楚如何獲得額外的按鍵綁定。

+0

C-ving箭頭,C-arrow和S-arrow給出了不同的結果,但C-S-arrow完全沒有。我沒有從終端回答,直到我輸入其他內容... C-v'ing家庭和C-home產生相同的結果。 S-home不會引發任何反應(C端和S端)。 我看了.inputrc和終結者(我的終端程序)的設置,與他們玩了一下,但沒有得到任何東西。 整個「沒有反應從C-v」錯誤我。我試圖查看它,但找不到類似的問題。 ...我不排除選擇解決您的簡短問題> _> – Peniblec 2012-07-05 21:29:54

+0

兩個想法:(1)終止者是否可以添加新的鍵盤綁定?如果是這樣的話,你希望cs-arrow是'\ e [1; 6_'或'^ [[1; 6_',其中'_'是適當的'A','B','C'或'D' 。 (2)你可以在xterm中嘗試同樣的東西(打開一個終端並鍵入'xterm&'),看看你的窗口管理器是否正在進行一些擊鍵操作? – 2012-07-06 04:28:36

+0

(1)我正在研究這個。改變現有的似乎很容易,但如何添加新的綁定 - 如果可能的話,文檔不太清楚。 (2)嗯,xterm清楚地顯示了我在之前的評論中嘗試過的每種組合的不同代碼 - 即使那些不會給我任何反饋的終結者。所以這將是我的窗口管理器的問題?添加新的綁定似乎可以通過Openbox實現,所以我會嘗試一下並讓你知道結果。 – Peniblec 2012-07-06 07:22:58