{%hackmd BJrTq20hE %} <style> .markdown-body:not(.next-editor) pre{ background-color: #101010; } </style> # Readline * 日期:2023.07.19 (三) * 報告者:[name=峻浩],[name=戴智濤] [toc] ## 簡介 Readline 是一個用於處理命令行輸入的庫,它提供了強大的編輯和自動完成功能,Readline 庫被廣泛應用於各種 Unix/Linux 系統中,是 Bash Shell 的一部分 Readline 庫提供了兩種常見的文本編輯器: * **`Emacs` 模式**:`Emacs` 是一個流行的文本編輯器,Bash 的 <font color=gree> 默認編輯模式 </font>就是 `Emacs` 模式。在 `Emacs` 模式下,可以使用類似於 `Emacs` 編輯器的快捷鍵來編輯命令行 * **`Vi/Vim` 模式**:`Vi/Vim` 是另一個廣泛使用的文本編輯器,在 `Vi/Vim` 模式下,可以使用類似於 `Vi/Vim` 編輯器的快捷鍵來編輯命令行 (`Vi/Vim` 以下簡稱 `Vi`) `Emacs` 按鍵通常標記方法: ``` E - Esc M - Meta (許多鍵盤 Meta 鍵都標記為 Alt) A - Alt (macOS:option鍵) C - Ctrl (*macOS:command鍵) S - Shift *快捷鍵 ``` <!-- 若要在 Bash 中切換編輯模式,可以使用以下命令: * 切換到 `Emacs` 模式: `set -o emacs` * 切換到 `Vi` 模式: `set -o vi` 可以將這些命令添加到 `~/.bashrc` 文件中,以便在每次啟動終端時自動設置所選的編輯模式: ```bash= # 打開 .bashrc nano .bashrc 或 vi .bashrc # 在尾端增加 "set -o emacs" / "set -o vi" # 可以用 "Alt + /" 或 "Ctrl + End" 快捷鍵到尾端 (nano模式) # 可以用 Shift + g 快捷鍵(即g的大寫字母)到尾端 (vi模式) ``` 或者 ```bash echo "set -o emacs" >> .bashrc ``` :::info `nano` 是一個獨立的文本編輯器,並不是 Readline 的編輯模式 ::: 無論選擇使用 `Emacs` 模式還是 `Vi` 模式,Readline 都提供了許多功能和快捷鍵,以提高在命令行中編輯和操作的效率,可以根據個人偏好選擇合適的編輯模式 --> ## 技巧 [Emacs Readline 編輯速查表](https://catonmat.net/ftp/readline-emacs-editing-mode-cheat-sheet.pdf) Readline 有許多常用的快捷鍵可用於增強命令行的編輯和操作。以下是一些常見的 Readline 快捷鍵及功能: ### 光標移動 * `Ctrl + A`:光標會跳到行首 * `Ctrl + E`:光標會跳到行尾 * `Ctrl + B`:向左移動一個字符 ( 向左箭頭 ) * `Ctrl + F`:向右移動一個字符 ( 向右箭頭 ) * `Alt + B`:向左移動一個詞(以空格或特殊字符為邊界)( `Ctrl + ←` ) * `Alt + F`:向右移動一個詞(以空格或特殊字符為邊界)( `Ctrl + →` ) ### 編輯 * `Alt + .`:插入上一個命令的最後一個參數 * `Alt + U`:將光標處的後面單詞全部變為大寫 * `Alt + L`:將光標處的後面單詞全部變為小寫 ### 刪除 * `Ctrl + D`:刪除光標處的字符,類似於 `Delete`(macOS:`fn + delete`),如果是空行,則退出當前會話 ( EOF ) * `Ctrl + H`:刪除光標前一個字符,類似於 `Backspace`(macOS:`delete`) * `Ctrl + K`:刪除從光標處到行尾的文本 * `Ctrl + U`:刪除整行 * `Ctrl + W`:刪除光標前一個詞 * `Alt + Backspace`:刪除從光標處到上一個單詞開頭的內容 ### 自動補全 * `Tab`: 自動補全命令、文件名或目錄名 * `Alt + !` : complete-command (命令) * `Alt + $` : complete-variable (變數) * `Alt + @` : complete-hostname (主機名) * `Alt + ~` : complete-username (用戶名) ### 歷史記錄 * `Ctrl + P`:選擇上一個命令(向上箭頭) * `Ctrl + N`:選擇下一個命令(向下箭頭) * `Ctrl + R`:進入歷史搜索模式 * `Ctrl + G`:退出歷史搜索模式 * `Ctrl + T`:選擇指令後不執行 ### 其他操作 * 按兩次 `Tab`: 顯示可執行的指令 * `Ctrl + L`:清屏,相當於執行 clear 命令 * `Ctrl + C`:終止當前正在運行的命令 * `Ctrl + Z`:將當前命令放入後台(暫停) * `Ctrl + S`:暫停當前正在運行的命令 * `Ctrl + Q`:繼續當前正在運行的命令 ```bash while [ 1 ]; do SUM=$(($SUM+1)); echo $SUM; done ``` # 參考資料 * [讀書會資料](https://linux.die.net/man/1/bash) * [參考資料來源1](https://docs.huihoo.com/homepage/shredderyin/readline.html) * [參考資料來源2](https://linux.cn/article-12706-1.html) * [參考資料來源3](https://tiswww.case.edu/php/chet/readline/readline.html#Readline-Bare-Essentials)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.