在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/人工智能/ 為什么 windows下安裝的redis-cli 客戶端無法使用上下鍵切換命令?

為什么 windows下安裝的redis-cli 客戶端無法使用上下鍵切換命令? tab鍵也無法使用?

通過 https://github.com/MicrosoftA...

clipboard.png

下載的redis windows msi 在windows上安裝redis,安裝完成后使用redis-cli來連接本地redis服務(wù),發(fā)現(xiàn)無法通過上下鍵來切換命令? tab鍵的提示功能也無法使用?

回答
編輯回答
過客

如果只是問技術(shù)上的「為什么」的話……

因為這個版本的 Redis 客戶端,可能沒有編譯入 Readline 或者類似的命令行功能支持庫。我看到 antirez 在 GitHub 上有個 antirez/linenoise repo,介紹說是 "...readline replacement used in Redis...",下面的 "Tested with" 段里面提到了一堆操作系統(tǒng),但就是沒提到 Windows。如果你下載的 redis 用的就是這個 linenoise 庫的話,那估計在 Windows 上確實沒做這個支持。

如果把控制臺的鍵盤/字符 I/O 看作 stdin 和 stdout 這幾個簡單的流,那方向鍵是沒有一席之地的。就像用 C 語言寫的最簡單的 hello world,不鏈接上奇怪的庫,運行的時候大概不支持方向鍵的操作。

向上箭頭,不是向上。它有它對應(yīng)的控制字符的碼。向下箭頭也不是向下。至于 tab,也未必是 tab,也有對應(yīng)的控制字符。所以最基本的情況下,這幾個按鍵按下之后導(dǎo)致亂碼才正常。

但是你們又不高興,那怎么辦?

那命令行程序要支持方向鍵操作,比如調(diào)出上一條命令 (各種 shell 和 REPL 的必備基礎(chǔ)功能),所以有了 Readline 這些庫來處理和終端之間最基本的這些交互。說白了就是,如果收到了什么特殊控制字符,就做點什么事情。那這種「臟」的代碼自然是和具體的終端環(huán)境耦合的了。不支持某種終端,那就是不支持?;蛘邲]鏈接進去,那就是不支持。

你遇到的情況很可能就是這樣,用的 Redis 程序在 Windows 上沒有鏈接到合適的類似 Readline 的庫。Windows 10 的話,也許可以試試用 WSL 跑 Linux 上的二進制,而 Linux 上面想要獲得鏈接庫齊全的二進制應(yīng)該稍微容易點,也不需要自己編譯。

2017年3月31日 23:57