,我發現這是一個組合:
一個
zsh的開發商並不認爲ZSH應該定義的行爲主頁,結束,刪除,...鍵。
Debian和Ubuntu通過定義普通用戶在全球/etc/zsh/zshrc
文件中預期的常規操作來解決此問題。繼相關的代碼(這是Debian和Ubuntu相同):
if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M emacs "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M vicmd "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[cuu1]" ]] || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history
[[ -z "$terminfo[cuf1]" ]] || bindkey -M viins "$terminfo[cuf1]" vi-forward-char
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history
[[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char
[[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char
# ncurses fogyatekos
[[ "$terminfo[kcuu1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history
[[ "$terminfo[kcud1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history
[[ "$terminfo[kcuf1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char
[[ "$terminfo[kcub1]" == "^[O"* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char
[[ "$terminfo[khome]" == "^[O"* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == "^[O"* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line
[[ "$terminfo[khome]" == "^[O"* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == "^[O"* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
fi
所以,如果你要連接到一個Debian或Ubuntu中,你不必做任何事情。一切都應該自動工作(如果沒有,見下文)。
但是...如果您連接到另一個盒子(例如FreeBSD),則可能沒有用戶友好的默認設置zshrc
。該解決方案當然是將Debian/Ubuntu zshrc
中的行添加到您自己的.zshrc
。
兩個
修補劑發送xterm
作爲終端類型到遠程主機。但是在某處發生混亂,並且不會發送正確的控制代碼主頁,結束,......人們期望從xterm
。或者一個xterm
終端預計不會發送那些或任何...(刪除密鑰確實在xterm
工作,但是,如果您在ZSH配置它)。另請注意,您的Numpad鍵在Vim中有趣,例如xterm
終端。
解決方案是配置膩子發送另一種終端類型。我試過xterm-color
和linux
。 xterm-color
固定主頁/結束的問題,但數字鍵盤仍然有趣。將其設置爲linux
可以解決這兩個問題。
您可以在連接 - >數據下在Putty中設置終端類型。不要試圖設置你的終端類型.zshrc
與export TERM=linux
,這是錯誤的。終端類型應由您的終端應用程序指定。因此,例如,如果您使用Mac機箱與Mac SSH客戶端連接,則可以設置它自己的終端類型。
請注意,TERM指定您的終端類型,並且與您要連接的主機無關。我可以在Putty中將我的終端類型設置爲linux
,並且可以毫無問題地連接到FreeBSD服務器。
因此,解決這兩個這些事情,你應該罰款:)
感謝上述綁定。現在在SecurtCRT爲我工作 – MikeRoger 2015-02-17 17:12:07