-
tmux 快捷筆記
常用的 tmux 記錄起來,方便查詢。 mac 可用 homebrew 安裝,linux 則可用 apt 、 pacman 或 flatpak 依照分支自己尋找適合的方式,快捷鍵的起手通常都會透過輸入 `ctrl` + `b` 進行,也就是所謂的 prefix key,後續輸入會用 `<prefix key>` 作為示意。 每一個 session 可以被視為獨立的 tmux ,在需要遠端背景運作相當方便,不用另外在安裝 zellij 或搭配其他分頁工具一氣呵成~雖然對 rust 還抱有很大的期望就是了🥲~ 附上 .tmux.config,習慣是使用亮色在搭配 zsh 且不顯示名稱只保留日期,需要調整使用再自行配置 ```tmux set -g default-terminal "screen-256color" set -g status-bg "#d4d1cb" set -g status-fg "#2d2b2b" set -g status-right "%H:%M %d-%m-%y" set-option -g default-shell /opt/homebrew/bin/zsh ``` ## window | 按鍵 | 說明 | | - | - | | `<prefix key>` + `c` | 新增 | | `<prefix key>` + `,` | 重新命名 | | `<prefix key>` + `&` | 關閉 | | `<prefix key>` + `p` | 前往下一個 | | `<prefix key>` + `n` | 前往上一個 | | `<prefix key>` + `<number>` (1 ~ 9) | 前往第 n 個 | | `<prefix key>` + `w` | 視覺化方式進行切換 | ## pane | 按鍵 | 說明 | | - | - | | `<prefix key>` + `%` | 垂直分割 | | `<prefix key>` + `"` | 水平分割 | | `<prefix key>` + `z` | 進入當下 | | `<prefix key>` + `!` | 將當前分割獨立出為一個 window | | `<prefix key>` + `x` | 關閉( 也可用 ctrl + d ) | | `<prefix key>` + `q` | 顯示當前 window 下所有 pane 的順序 | | `<prefix key>` + `o` | 輪流切換 | | `<prefix key>` + `z` | 全螢幕切換(再一次反之) | | `<prefix key>` + `<direction key>` (方向鍵) | 指定方向切換 | | `<prefix key>` + `<space>` | 切換佈局 | | `<prefix key>` + `<ctrl> +<direction key>` (方向鍵) | 調整尺寸 | ## session session 類似 screen 的效果,對於需要遠端的背景執行的狀態很好用。 | 按鍵 | 說明 | | - | - | | `tmux` | 新增 | | `tmux ls` | 列出所有 | | `tmux new -s <name>` | 新增並命名 | | `tmux rename-session -t <n> <name>` | 重新命名第 n 個 | | `tmux rename-session -t <old name> <new name>` | 重新命名 old name 為 new name | | `tmux attach -t <n>` | 使用第 n 個 | | `tmux attach -t <name>` | 使用 <name> session | | `tmux kill-session -t <n>` | 關閉第 n 個 | | `tmux kill-session -t <name>` | 關閉 <name> session | | `tmux kill-session -a` | 關閉所有 | | `tmux kill-server` | 關閉 tmux server | | `<prefix key>` + `$` | 重新命名 | | `<prefix key>` + `d` | 離開目前 | | `<prefix key>` + `s` | 視覺化方式切換 | | `<prefix key>` + `L` | 切換至上個用過的 | | `<prefix key>` + `(` | 前往上一個 | | `<prefix key>` + `)` | 前往下一個 | ## search | 按鍵 | 說明 | | - | - | | `<prefix key>` + `f` | 搜尋所有 window 關鍵字 | ## 移動操作 想使用滑鼠操作可在 .tmux.config 內設定新增 set -g mouse on 即可,或是使用 \<prefix key\> 後再輸入 :set mouse on 也可以完成操作,但如果單純依賴鍵盤就可以運用 copy mode 的方式進行閱讀,也可以進行區塊複製,但預設貼上的位置也僅限 tmux 內,需要把複製的內容與一般複製互通可以再找找教學,這邊就不贅述。 | 按鍵 | 說明 | | - | - | | `<prefix key>` + `[` | 往上 | | `<prefix key\` + `]` | 往下 | | `<space>` | 選擇 | | `<enter>` | 複製 | 更多指令可以參考 `man tmux`
- #tmux
calendar icon -
flutter 在 mac 上開發
明年開始有部分專案會轉用 flutter 開發並在多平台上發布,稍微順一下環境部署與開發至上線產品的流程~~少走一點歪路~~。 以下是用 mac 搭配 homebrew 管理安裝 fvm 與 cocoapods (ios 開發時需要,如果不用可以不安裝)並進行開發,當然也可以用的 sdkman,linux 或 windows 都有各自的方法管理,甚至用官方提供的安裝方法也是可以的沒有一定。 ## homebrew 安裝 fvm 以下是新增 homebrew tap 與安裝 fvm 的過程,這裡先用 stable 穩定版號,如果需要也可以改為其他版本(e.g 3.14.0),查閱更多版本號可以去 github 或是頁面,而 fvm list 會列出目前所有已安裝的版本,方便進行版本管理,另外一般官方的使用區別在於前面會加上 fvm,而後面則是與一般使用 flutter 沒多大差別。 ```bash # 新增 homebrew tap brew tap leoafarias/fvm brew install fvm # 安裝且使用 stable 版本 fvm install stable fvm use stable fvm ls #(fvm list) # 查看版本與檢查環境 fvm flutter --version fvm flutter doctor # 檢查特定版本更新(e.g 3.14.0) fvm flutter doctor --version 3.14.0 ``` 這邊檢查後會列出個別的裝置下所需要的環境,例如我需要打包 ios 的 ipa 需要安裝 xcode 與 cocoapods,而我只有安裝 xcode 而且尚未進行任何設定出現這樣的內容。 ```bash [✗] Xcode - develop for iOS and macOS ✗ Xcode installation is incomplete; a full installation is necessary for iOS and macOS development. Download at: https://developer.apple.com/xcode/ Or install Xcode via the App Store. Once installed, run: sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -runFirstLaunch ✗ CocoaPods not installed. CocoaPods is a package manager for iOS or macOS platform code. Without CocoaPods, plugins will not work on iOS or macOS. For more info, see https://flutter.dev/to/platform-plugins For installation instructions, see https://guides.cocoapods.org/using/getting-started.html#installation ``` 第一個錯誤可依照說明來修正,輸入指令設定開發環境即可解決。 ```bash sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -runFirstLaunch ``` 而第二個錯誤是缺少 cocoapods,這時候需要進行安裝,原本查資料是使用 gem 來安裝,但狀態一直卡著沒有任何反應,所以改為使用 homebrew 安裝,想想這樣也比較方便管理。 ```bash brew install cocoapods ``` 解決完上述問題後再使用一次 fvm flutter doctor 檢查,就可以看到 ios 打包使用的環境基礎已經完成。 ## 新增專案與預覽 這裡新增一個初始專案為 flutter_project,並進入資料夾初始化專案,這裡的 . 代表在當前位置建立。 ```bash mkdir flutter_project cd flutter_project fvm flutter create . ``` 使用 chrome 預覽 lib/main.dart (入口)來進行開發熱加載,而這裡的 -d 是選擇開發的裝置,這裡使用 chrome 或是其他裝置(e.g macos)。 ```bash fvm flutter run -d chrome ``` 而在 xcode 上則可以使用 open 來開啟 xcworkspace。 ```bash # fvm flutter pub get # fvm flutter build ios open ios/Runner.xcworkspace ``` 大致上就是這樣 chill ( · ❛ ֊ ❛)。
- #flutter
calendar icon -
Raspberry Pi 4B 番外之自行編譯 nvim 過程
## 前言 在 raspberry pi 4b 上用 raspberry os 搭 xfce 上斷斷續續使用了一陣子,速度在前端開發上真的不是很理想,單純開發前端一個 vscode 、一個 node 服務再搭個 firefox 純預覽產品真就慢到懷疑人生是不是選錯職業,原本想用 nvim 取代 vscode ,但 apt 上的版本落差真的有點距離,索性就產出這篇文記錄一下自己打包的過程,順便摸索有沒有其他方法可以讓開發變得更加流暢,寫個筆記自行編譯的過程方便之後查閱抄作業。 ## 實作 從 github 下載 nvim ```bash git clone https://github.com/neovim/neovim.git cd neovim git checkout stable ``` 安裝編譯所需要的依賴,在這一步糾結滿久要不要安裝某些套件,這裡提供一個方法,可以去 debian 的 package 倉庫看看打包文件到底需要哪些東西,直接看系統下套件會安裝哪些套件,可以大大減少缺東西或錯誤乃至套件換名稱找不到了窘境。 ```bash sudo apt-get install ninja-build gettext cmake unzip curl build-essential ``` 最後在進行編譯 ```bash make CMAKE_BUILD_TYPE=Release sudo make install cmake -S cmake.deps -B .deps -G Ninja -D CMAKE_BUILD_TYPE=RelWithDebInfo -DUSE_BUNDLED=OFF -DUSE_BUNDLED_LIBUV=ON -DUSE_BUNDLED_LUV=ON -DUSE_BUNDLED_TS=ON -DUSE_BUNDLED_UTF8PROC=ON cmake --build .deps cmake -B build -G Ninja -D CMAKE_BUILD_TYPE=RelWithDebInfo cmake --build build ``` 查看版本,如果未增加可指令可進行寫入 ( e.g bash ) ```bash nvim --version echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` ## 參考 - https://github.com/neovim/neovim/blob/master/BUILD.md - https://packages.debian.org/sid/source/neovim - https://aws.amazon.com/tw/compare/the-difference-between-apt-and-apt-get/
- #raspberry
- #vim
calendar icon -
Raspberry Pi 4B 指北針
順風順水試試樹莓派體驗 arch linux arm,依照官網給的方法安裝~就沒問題了~ 依照官方步驟正常進入系統沒問題,可更新後引導就會出現了 uboot 的飛船與一排藍色企鵝,進入系統時間也延長了不少,想著恢復到初始引導就好,結果替換後反而無法進入系統,而且如果使用記憶卡作為開機碟也會卡在初始引導,要修復要自行手動進行編譯,下策最後只好暫時先轉向使用 debian。 debian 的過程就方便許多,無論是用 dd 去寫入或用 raspberry pi os 的軟體進行都非常快速,連記憶卡寫入過程都不用一分鐘, 用 root 登入首要更新系統無壓力,再來**非常強烈建議馬上建立新使用者**,除了常被告誡問題外,這次因為使用 tmux 操作不當導致帳號無法正常驗證登入,後續只好整個打掉重來 🙃,看來沒問題就打算就直接用 command pattern,可以參考以下進行新增刪減符合自己的狀況。 ```bash apt update apt upgrde apt install wget curl git vim zsh sudo apt install tmux neofetch useradd -m -g users -G audio,video-s /bin/bash {username} ``` 設定使用者權限 vim /etc/sudoers ```bash {username} ALL=(ALL:ALL)ALL ``` 後續重啟並登入新帳號即可開始佈置環境,另外暫時不推薦為了使用 ifconfig 去安裝 net-tools,可該用 ip a 看網路硬體,沒啟用 wifi 硬體用 ifup 啟用,還有引導太久沒更新也可以安裝並進行更新。 ```bash ip a sudo ifup {wifiname} vim /etc/network/interfaces.d/wlan0 reboot ``` 另外如果沒有更新過 raspberry pi 的引導也可以順手更新一下 ```bash sudo rpi-eeprom-update ``` 接著就是常規更新 shell 的項目 1. cat /etc/shells 2. chsh -s $(which zsh) 3. oh my zsh 4. powerlevel10k 5. p10k configure 6. exec $SHELL 中文輸入法暫時還沒嘗試出來,另外最後記錄一下 raspberry pi os 遇到的,安裝選擇英文來走,除了方便路徑操作不用再轉換輸入中文,中文預設的酷注音輸入法在 bookworm 會閃爍不能輸入,目前查出的解決方法是把 Wayland 變更為 X11 重開就可以正常使用。
- #raspberry pi
- #linux
calendar icon -
淺聊 iSH 在 iphone 上進行前端開發
前陣子因為聚會中突然想 coding 驗證看看某個方案是否可行,但電腦又不會隨時帶在身邊,碰巧爬文爬到了一個蠻有吸引力的解決方案 iSH。 安裝後的預設是 alpine 3.14,雖然離目前最新 3.20 有點距離,可如果單純只是拿來 ssh 進行遠端連線進行開發其實已經足夠,因為系統配置都在遠端上(笑)。本地測試後不能進行完整開發,除了系統只支援 32 bit 有許多軟體不支援,其次硬體虛擬化的限制導致轉譯效能低也是個問題,簡單測試起一個 node 或 vite 也需要花相當長時間的過程啟動才能運作,甚至 npm 會因環境導致部分 api 無法正常使用,建議還是用遠端進行體驗會好真的很多。  如果要更換 linux 發行版可在 settings 內的 Filesystems 掛載引導,完成後 app 會自動關閉重新打開即可正常使用,但如果要變更 ish 原本的 alpine 的來源,記得要先除去 ish 保護 `rm /ish -rf` 重新開啟時才不會被恢復,並執行 `apk upgrade && apk fix` 即可正常取得設定的來源清單,另外也有人嘗試安裝 debian 等等發行版,有興趣可以試試應該會有不錯的體驗。 <!-- <img src="https://github.com/user-attachments/assets/94b37bed-7748-42a9-9a9b-b93e94a4d64a" alt="mount" style="width:360px;"> --> ## 參考 - https://github.com/ish-app/ish - https://ivonblog.com/posts/ios-ish-shell - https://github.com/andrewintw/run-alpine-linux-on-ios
- #terminal
- #ios
- #ish
calendar icon -
wezterm 與 neovim 前端環境設定分享
這篇是關於兩個前端開發過程中,學習 wezterm 與 nvim 的內容紀錄與分享。 # wezterm 此篇拿來使用方法、檢視設定、遇到的問題與往後想要達到的狀態,算是探索 terminal 的過程,之前使用 terminal 的順序分別為 iterm -> alacritty -> wezterm ,iterm 不用多說以前肯定是接觸 mac 後第一個會安裝的使用的酷東西,後來更換到 alacritty 執行速度真的快到不像話,可前端在開發會需要多個窗口,解決方法也是可以依賴 zellij 快速搞定,後續在使用上 wezterm 比較能達到一個平衡~而且不得不說 alacritty 的 icon 放在 mac 的 dock 上真的相當突兀~,預設 shell 是省心的 zsh + oh my zsh + powerlevel10k。 ## TODO - [x] 預設的 opt(alt) 加上方向鍵在 mac 無法使用,改為自行設定 ctrl + cmd。 - [ ] 設定自訂視窗分割僅限於 mac 上使用,尚未在 window 與 linux 上測試,所以不全部套用。 ## 快捷鍵 1. 新增分頁 cmd + t 2. 切換分頁 cmd + number key 3. 水平分割視窗畫面 ctrl + shift + opt + " 4. 垂直分割視窗畫面 ctrl + shift + opt + % 5. 移動分割區域 ctrl + cmd + arrow key #### **`~/.wezterm.lua`** ```lua local wezterm = require 'wezterm' local act = wezterm.action local config = wezterm.config_builder() -- config.color_scheme = 'AdventureTime' config.font = wezterm.font 'MesloLGS NF' config.font_size = 14 config.keys = { { key = 'LeftArrow', mods = 'CMD|CTRL', action = act{ ActivatePaneDirection = 'Left' } }, { key = 'RightArrow', mods = 'CMD|CTRL', action = act{ ActivatePaneDirection = 'Right' } }, { key = 'UpArrow', mods = 'CMD|CTRL', action = act{ ActivatePaneDirection = 'Up' } }, { key = 'DownArrow', mods = 'CMD|CTRL', action = act{ ActivatePaneDirection = 'Down' } }, } return config ``` # neovim 使用 nvim 前都習慣用 vscode 作為主要的 IDE 現在也依然在使用,確實上手速度與體驗上都相當優良直到現在依然也相當推薦,可開發時間長了會發現與其仰賴滑鼠進行操作,如果能在鍵盤上就完成全部除了可以節省更多時間且是多麽有魅力與成就感的,在未有提供 GUI 的環境下也無法使用 vscode 帶來的好處,所以就萌生了使用 nvim 的這條路,目前內容與設定放置可參考 https://github.com/akakaki/nvim-lua ,後續會把設定與檔案分開整理至下方內容中。 ## TODO - [ ] ~NvChad~ - [ ] ~Codium AI~ ## 快捷鍵 | 按鍵 | 操作 | |-|-| | h / j / k / l | 左 / 下 / 上 / 右 | | i / I | 在位置前編輯模式 / 移動至此行開頭進行編輯模式 | | a / A | 在位置後編輯模式 / 移動至此行結尾進行編輯模式 | | o / O | 新增一行並進入編輯模式 / 回到上一行並進入編輯模式 | | gg | 跳至第一行 | | G | 跳至最後一行 | | {n}G | 跳至 n 行 | | ctrl + o | 回到前一個位置 | | esc | 退出編輯 | | :wq / ZZ | 存檔離開 | | :q! / ZQ | 不儲存離開 | | viB / vib | 選取 {} 或 () / 選取整個 {} / () | | ciB / cib | 刪除 {} 或 () / 刪除整個 {} / () | | dd | 剪下整行 | | y | 複製行 | | p | 貼上 | | ~ | 當前位置文字大小寫轉換 | | % | 在括弧開始處跳至括弧內的結束行數 | | Shift + ~ | 變更大小寫 | | g~w | 字串變大寫 | | % | 跳至各種括號頭尾 | ## 搜尋 | 按鍵 | 操作 | |-|-| | / | 搜尋 | | :noh | 取消搜尋 | | n / N | return 後搜尋下一個與上一個 | ## 快捷組合功能 | 按鍵 | 操作 | |-|-| | ctrl + v + 選取行 + I | 可同時編輯 | | ctrl + v + G + $ | 全選 | | ctrl + v + G + $ + A | 修改最後 | | gg + = + G | 檔案排列整齊 | | ctrl + z / fg | 跳出檔案 / 回到檔案 |
- #terminal
calendar icon