微信程序员推荐的后台开发环境和常用小工具

图片

图片

👉目录

1 终端配置

2 zsh+tmux

3 neovim

4 一些好用的小工具

本文详细分享了作者的后台开发环境配置方案及常用效率工具,旨在帮助读者搭建个性化、高效的开发工作流。文章从终端环境配置切入,逐步介绍了开发环境各组件的高度定制化方案,并推荐了多个提升开发效率的实用工具。

关注腾讯云开发者,一手技术干货提前解锁👇

鹅厂程序员面对面直播继续,每周将邀请鹅厂明星技术大咖讲解 AI 时代下的“程序员护城河”。更有蛇年公仔等精美周边等你来拿,记得提前预约直播~👇

01

终端配置

有的人喜欢用vscode,有的人喜欢用vim,我个人用vim习惯了,所以通过Windows terminal连接开发机,不使用weterm的原因是感觉weterm的侧边栏太多了,不够简洁。

首先本地安装wsl2,Linux发行版使用Arch WSL,使用Arch的一个原因是它可以滚动更新,使用最新的软件包,Ubuntu每隔2年发布一个版本,升级太费事了。字体在 https://www.nerdfonts.com/font-downloads 下载的Source Code Pro,可以让终端显示一些文件夹符号。 Windows terminal主体配色。

{            "background": "#1E1E1E",            "black": "#000000",            "blue": "#2472C8",            "brightBlack": "#666666",            "brightBlue": "#3B8EEA",            "brightCyan": "#29B8DB",            "brightGreen": "#23D18B",            "brightPurple": "#D670D6",            "brightRed": "#F14C4C",            "brightWhite": "#E5E5E5",            "brightYellow": "#F5F543",            "cursorColor": "#FFFFFF",            "cyan": "#11A8CD",            "foreground": "#BBBBBB",            "green": "#0DBC79",            "name": "Dark (Visual Studio)",            "purple": "#BC3FBC",            "red": "#CD3131",            "selectionBackground": "#FFFFFF",            "white": "#E5E5E5",            "yellow": "#E5E510"}

然后是连接开发机,Windows terminal的默认会话改成arch,在.ssh/config里面增加配置。

Host devcloud     HostName x.xxx.xx.xxxx     xxxxx 123456
Host mnet     HostName xxxxxx.com     xxxxx 123456     ControlMaster auto     ControlPath ~/.ssh/master-%r@%h:%p     HostKeyAlgorithms=+ssh-rsa

使用私钥连接开发机,装完之后直接卸载tjj,tjj会导致chsh改默认shell失败,我的默认shell是zsh。连接跳板机的配置里面ControlMaster和ControlPath会让ssh共享链接,下次连接不用输pin+token,我是开了一个screen,连接之后就放到后台,就可以关闭tab了,后面有需要再连接跳板机。

在本地wsl里面alias dgo和qlst,就可以忽略跳板机存在了。

cat `which dgo`#ssh mnet -t "go $1" 2> /dev/nullcat `which qlst`#ssh mnet -t "qlst $1" 2> /dev/null

02

zsh+tmux

使用oh my zsh,个人配置如下

export ZSH="$HOME/.oh-my-zsh"ZSH_THEME="xxxx"
plugins=(    git    docker    zsh-autosuggestions    autojump    zsh-syntax-highlighting    golang    rust)
source $ZSH/oh-my-zsh.sh
source ~/.profile_commalias ls="eza --color=always --long --icons=always --time-style='+%Y-%m-%d %H:%M'"alias lt='ls --tree'
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64export PATH=$HOME/.local/git/bin:$HOME/.local/node/bin:$HOME/.local/python/bin:$HOME/.local/bin:$HOME/.go/bin:/usr/local/go/bin/:$HOME/.cargo/bin:$HOME/.local/tools_bin/patchbuild:$HOME/.local/node/bin:$PATH:$HOME/.ftexport MANPAGER="sh -c 'col -bx | bat -l man -p'"export RUNEWIDTH_EASTASIAN=0
alias f='files_list=$(fzf -m --layout reverse --height=80%  --border=bold --preview "bat --style=numbers --color=always --line-range :500 {}") && if command -v floaterm &> /dev/null;then floaterm $files_list;else nvim $files_list;fi'
alias tcc="patchbuild build -m64 xxxxxxxxxxxxxxxxxxxxxxx --include-commit  --profile=debug --skip-ipath"alias tmake="patchbuild build -m64 xxxxxxxxxxxxxxxxxxxxxxx  --download-genfiles --compile-command-query='--merge' --include-commit"alias dcc="patchbuild docker -m64 xxxxxxxxxxxxxxxxxxxxxxx "alias s='cat ~/.notes.txt | grep -i'alias a='vim ~/.notes.txt +9999'alias qq='cd ~/xxxxxx'alias h='cd ~'alias t='cd ~/tmp'fmt_date() { date '+%Y-%m-%d %H:%M:%S' -d @"$@" }fmt_stamp() { date  +%s --utc -d "$*" }
# vim(){ if command -v floaterm &> /dev/null;then floaterm $@;else nvim $@; fi }
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
[ -z "$TMUX"  ] && [ -z "$DISTROBOX_ENTER_PATH" ] && ! [ -z "$SSH_TTY" ] && { tmux attach || exec tmux new-session && exit; }
PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'
alias cat='bat -pp'export LANG=en_US.UTF-8export LC_ALL=en_US.UTF-8source $HOME/.local/fzf-git.sh/fzf-git.sh
function chpwd() {    export MODULE=$(basename $(pwd))}
chpwd

里面比较有用的是zsh-autosuggestions、zsh-syntax-highlighting、autojump,安装方法可以看它的GitHub文档。前面2个可以提供终端命令高亮和提示补全,可以少敲很多。autojump可以方便的切换目录,比如进入过一个目录,只记得大概的名字,就可以通过j+关键字直接跳到这个目录。

里面的[ -z "$TMUX" ] && [ -z "$DISTROBOX_ENTER_PATH" ] && ! [ -z "$SSH_TTY" ] && { tmux attach || exec tmux new-session && exit; }可以在ssh连接的时候自动打开tmux,如果已经有tmux了,自动attach上去。如果是用vscode连接打开终端不会影响。 tmux配置如下.config/tmux/tmux.conf

# 0 is too far from ` ;)set -g base-index 1
# Automatically set window titleset-window-option -g automatic-rename onset-option -g set-titles on
# set -g default-terminal screen-256colorset -g status-keys viset -g history-limit 10000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  setw -g mode-keys vi#setw -g monitor-activity on
setw -g mouse on
set -s escape-time 50
bind c run-shell 'tmux new-window "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'bind s run-shell 'tmux split-window -v "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'bind v run-shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
# Shift arrow to switch windowsbind -n S-Left select-pane -Lbind -n S-Right select-pane -Rbind -n S-Up select-pane -Ubind -n S-Down select-pane -D
set -g default-terminal "screen-256color"
# THEMEset -g status offset -g status-bg colour234set -g status-fg white# set -g mode-style bg=white,fg=blackset -g status-interval 60set -g status-left-length 30set -g status-left '#[fg=green](#S) #(whoami)'set -g status-right '#[fg=yellow]#(cut -d " " -f 1-3 /proc/loadavg)#[default] #[fg=white]%H:%M#[default]'

里面的run-shell是为了保持在当前的目录,配合zsh里面的PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'使用,有很多开发环境目录是软链的,不保持目录,代码编译的时候会有问题。

zsh主题:

PROMPT='%{$fg[cyan]%}%~%{$reset_color%} $(_omz_git_prompt_info)'PROMPT+=" %(?:%{$fg_bold[green]%}%1{➜%} :%{$fg_bold[red]%}%1{➜%} )%{$fg[cyan]%}%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}%1{✗%}"ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"

开头有个符号是为了让我区分当前是在本地arch还是开发机,符号来自于https://github.com/eza-community/eza/blob/main/src/output/icons.rs

03

neovim

https://github.com/lasorda/vimrc 使用coc来管理各个lsp插件,使用coc的好处就是如果需要临时写个其他语言,找一下对应的插件CocInstall一下就行了。 写c++主要依赖clangd,使用到的.clang-format .clang-tidy .clangd在附件里面,基本上写完没有error和warning,编译都能过,写完手动根据.clang-format格式化一下 里面的插件已经有python、go、rust、sh了,日常使用基本没啥障碍。

.vim/tasks.ini 里面的配置和vim插件配合使用,日常要写个测试代码比较方便。

[run]command="$(VIM_FILEPATH)"command:cpp=c++ -std=c++17 "$(VIM_FILEPATH)" -o "$(VIM_PATHNOEXT)" -lfmt -lpthread && "$(VIM_PATHNOEXT)" && rm -f "$(VIM_PATHNOEXT)"command:c=cc "$(VIM_FILEPATH)" -o "$(VIM_PATHNOEXT)" -lfmt -lgtest -lleveldb -lhiredis -lco && "$(VIM_PATHNOEXT)" && rm -f "$(VIM_PATHNOEXT)"command:go=go build -o "$(VIM_PATHNOEXT)" "$(VIM_FILEPATH)" && "$(VIM_PATHNOEXT)" && rm -f "$(VIM_PATHNOEXT)"command:python=python3 "$(VIM_FILENAME)"command:sh=chmod +x $(VIM_FILENAME) && ./$(VIM_FILENAME)output=terminalcwd=$(VIM_FILEDIR)save=2

04

一些好用的小工具

protobuf-language-server

https://github.com/lasorda/protobuf-language-server proto文件跳转,cpp直接跳proto定义位置(自动生成的pb.h下载到了本地,先跳.h,.h再跳proto),有代码格式化和补全。

starpls

https://github.com/withered-magic/starpls BUILD文件跳转和查看大纲,个人认为十分方便的工具。

bat

https://github.com/sharkdp/bat 替换bat,个人配置如下.config/bat/config,zsh里面cat和man都替换成了bat,颜色更丰富,重点更突出。

--theme="Visual Studio Dark+"--map-syntax "*.conf:INI"--map-syntax "BUILD*:Python"--map-syntax "*.list:JSON"

fzf

https://github.com/junegunn/fzf 用过的都说好。

delta

https://github.com/dandavison/delta 本地看git diff更直观。

dust

看硬盘占用,很直观。

eza

替换ls的工具,提供的颜色和符号比ls更多,更加直观。

procs

替换ps,用的不多。

ripgrep

替换grep,很好用。

tlrc

tldr的rust版本,不会用的命令就tldr 一下。

-End-

原创作者|潘志豪

感谢你读到这里,不如关注一下?👇

图片

📢📢来领开发者专属福利!点击下方图片直达👇

图片

图片

你有什么好用的小工具?欢迎评论留言补充。我们将选取1则优质的评论,送出腾讯云定制文件袋套装1个(见下图)。8月5日中午12点开奖。

图片

图片

图片

图片

图片

图片

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值