程序开发软件
编辑器
Vim

https://www.runoob.com/linux/linux-vim.html
配置
在命令模式下输入set
命令修改当前配置,或在配置文件/etc/vim/vimrc
中配置相应命令以永久修改。
缩进
# edit
set tabstop=4
set softtabstop=0 # 不要将空格和tab混合输入
set shiftwidth=4 # 默认用4个空格
set autoindent # 自动缩进
set expandtab # tab转换为空格
# 对于下列文件类型,4个空格太宽了,可以换成2个空格。
autocmd FileType html,css,xml,yaml,json,sh set sw=2 ts=2
https://www.kawabangga.com/posts/2817
显示行号
set [no]number # => set [no]nu
set [no]relativenumber # => set [no]rnu *
set numberwidth=2
*
:相对行号和绝对行号可同时存在。
常用命令
查找
/<search-pattern> # forward
?<search-pattern> # backward
回到命令模式后,输入n
查找下一个,输入N
查找上一个。
替换
使用sed
替换语法:
:n,[m]$s/<origin>/<replace>/g #替换第n行(到m行,默认到最后)中origin为replace
转义字符"/
" $\rightarrow$ "\/
"。
复制粘贴
yy # 复制一行,
V #选择连续多行,
v # 移动方向键任意选择,Ctrl+v 选择光标开始的矩形区域
y # 复制所选内容
d # 剪切
p # 粘贴所选内容,如果选择整行,则粘贴到所在行的后一行;否则粘贴到光标所在位置
删除
# 普通命令模式
gg # 返回文件开始
dG # 删除至文件末尾的所有行
# 底线命令模式
:1,$d # 删除第1行至最后一行$的所有内容
:%d # %代表所有行
撤销|重做
u,:u,:undo # 撤销单步
4u # 撤销多步
Ctrl+r # 重做
保存
:w !sudo tee % # 以管理员权限保存只读文件
If
Ctrl+S
freezes your terminal, typeCtrl+Q
to get it going again.
Visual Studio Code
开发环境
VSCode+MSYS2
安装MSYS2后,在MSYS2终端中安装开发工具链,以C++/mingw64开发为例,
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
将$MSYS2_ROOT/mingw64/bin
加入Windows路径,可在Windows下使用MSYS2的开发工具链。
Get Started with C++ and Mingw-w64 in Visual Studio Code
资源管理器
排除要显示的文件
设置的文件模式将不会在资源管理器中显示,如果直接在用户主目录下工作,通常需要将系统或程序产生的隐藏目录排除。
"files.exclude": {
".*hst": true,
".*rc": true,
".bash*": true,
".pki": true,
".vscode-server": true
}
离线安装VSCode远程服务
在联网状态下,VSCode远程服务会在建立远程连接后自动安装。在离线状态下,自动安装会失败,但可以从日志中得到要安装的远程服务软件包的地址。
https://update.code.visualstudio.com/commit:dfd34e8260c270da74b5c2d86d61aee4b6d56977/server-linux-x64/stable
利用此地址,可以从联网计算机上下载安装包,并解压到目标机器的~/.vscode-server/bin/
目录下,并将解压内容根目录以上述URL中的commit ID命名。
Code-Server
安装
Install - code-server docs (coder.com)
Usage - code-server docs (coder.com)
安装插件
Code-Server从Open VSX Registry下载安装插件。如果存在网络问题,可离线安装:
code-server --install-extension ext_name.vsix # --list-extensions
反向代理
目前不支持为Web服务设置根路径,因此需要使用独立的服务站点(独立端口)来代理。
server {
listen 80;
listen [::]:80;
server_name mydomain.com;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
多用户使用
可以为每个系统用户启用一个服务:
systemctl enable --now code-server@USER
# ExecStart=/usr/local/code-server
服务将从用户目录下读取配置文件~/.config/code-server/config.yaml
(配置项对应命令行参数名),其中包含服务的监听地址端口和身份认证配置。
bind-addr: 0.0.0.0:8081
auth: password
password: xxxxyyyy
#cert: /PATH/CERTFILE
#cert-key: /PATH/CERT_KEY
disable-telemetry: true
disable-update-check: true
user-data-dir: /PATH
extensions-dir: /PATH
建议使用普通用户建立Code-Server服务,防止用户越权修改服务器后台文件。
Coder
安装
预装环境
如果需要在本地使用docker部署工作空间,则需要首先安装docker。
如果未预先安装docker,会出现以下错误:
...Got permission denied while trying to connect to the Docker daemon socket
。此时,需要将用户coder
加入docker
组中。sudo usermod -aG docker coder systemctl restart coder.service
在线安装
curl -fsSL https://coder.com/install.sh | sh
离线安装
使用发行版软件包.deb
、.rpm
、.apk
安装。
Docker-compose安装
Kubernetes+Helm
Helm 是 Kubernetes 的包管理器。
配置和启动服务
服务的访问地址CODER_ACCESS_URL
,可通过/etc/coder.d/coder.env
配置。
coder server
-a,--address $CODER_ADDRESS # 127.0.0.1:3000
--access-url $CODER_ACCESS_URL # http://localhost:3000
--postgres-url $CODER_PG_CONNECTION_URL # 数据库地址*
--global-config $CODER_CONFIG_DIR # 配置数据目录**
sudo systemctl enable --now coder # 作为服务启动
*
:如果未指定,则Coder将自动下载PostgreSQL数据库,并将数据存储在配置目录下。使用coder server postgres-builtin-url
可查看内置数据库的访问地址。
**
:默认配置数据目录位于/root/.config/coderv2
。
网络代理:为了保证Coder服务访问registry.terraform.io
以及github.com
等网站下载资源,可能需要配置代理(通过/etc/coder.d/coder.env
配置)。
身份认证
通过终端登录并配置第一个管理员用户。Coder默认使用用户名和密码认证。
coder login http://localhost:3000 # 配置用户名、邮箱和密码
coder login -u USER http://localhost:3000 # 在终端登录
管理用户身份:
Functions | User Admin | Template Admin | Owner |
---|---|---|---|
Add and remove Users | ✅ | ✅ | |
Change User roles | ✅ | ||
Manage Templates | ✅ | ✅ | |
View, update and delete ALL Workspaces | ✅ | ✅ | |
Execute and use ALL Workspaces | ✅ |
所有用户隐含Member
身份,可创建工作空间。
工作空间配置
工作空间模板配置
在终端中登录用户并执行:
coder templates init [directory] -v # 选择模板类型并初始化。
cd directory && vim main.tf # 修改模板描述文件
coder templates create/push --parameter-file params.yaml # 创建/更新模板
directory
是模板名称和模板文件所在目录名。
创建工作空间
命令行基于模板创建工作空间,也可登录Web界面选择模板创建。
coder create --template="yourTemplate" <workspace-name>
coder show <workspace-name>
问题:==访问https://registry.terraform.io/.well-known/terraform.json
失败,网络连接问题。==
编写模板
Templates - Coder OSS main docs
安装IDE
resource "coder_agent" "main" {
arch = "amd64"
os = "linux"
startup_script = <<EOF
#!/bin/sh
# install and start code-server
curl -fsSL https://code-server.dev/install.sh | sh
code-server --auth none --port 13337
EOF
}
Configuring Web IDEs - Coder OSS main docs
安装JetBrains Projector
安装JupyterLab
安装airflow
终端
Windows Terminal
离线安装
从Github下载最新的发布版本,如果离线安装需要使用带依赖库的Win10
版本包。
Add-AppxPackage FILENAME.msixbundle
安装时如果出现VC运行时版本错误,则首先安装附带的依赖库(
Microsoft.VCLibs.x64.*.appx
);如果手动安装,可能需要安装VC_redist.x64.exe
。
配置
Windows Terminal Tips and Tricks | Windows Command Line
配置文件为settings.json
,其中终端配置项位于$.profiles.list[*]
,基本配置项如下:
{
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"startingDirectory": "%HOMEPATH%",
"startingDirectory": "//wsl$/Ubuntu/home/gary", // 代替默认的"~",避免找不到目录
}
字体
{
"fontFace": "Cascadia Code PL",
"fontSize": 12
}
颜色和背景
终端的颜色配置项包括:
{
"colorScheme": "One Half Dark",
"useAcrylic": true,
"opacity": 70
}
内置颜色方案位于配置文件的
$.schemes[*]
,可自定义颜色方案。

背景
{
"backgroundImage": "C:\Users\admin\background.png",
"backgroundImageAlignment" : "bottomRight",
"backgroundImageStretchMode" : "uniform",
"backgroundImageOpacity" : 0.3,
}
除上述基础配置外,可使用Oh-My-Posh等工具对终端进行个性化定制。
集成终端工具
MSYS2
C:\msys64\msys2_shell.cmd -mingw64 -defterm -no-start
启动的终端环境包括mingw64
、clang64
、msys
、ucrt64
等。
Anaconda
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\Users\gary\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate 'C:\Users\gary\miniconda3' "
Nushell
Nushell is both a programming language and a shell.
安装
winget install nushell # [Windows]--> choco/scoop
brew install nushell # [Linux/Mac]
设置登录终端
Linux:将nu
加入/etc/shells
白名单中,然后使用chsh
命令切换Shell程序。
Windows:安装完成后将自动为Windows Terminal生成Nushell配置,初次启动会进行初始化。
配置
config nu
常用命令
Nushell命令输出内容为对象(类似于Powershell,包括表格、字典和字符串等)并以表格形式显示,方便后续命令操作数据。
命令支持Tab补全,并同时提供命令候选与帮助信息。
ps
:显示进程信息。
date
:显示日期信息。
date now | date to-table
sys
:显示系统硬件信息。返回对象不是简单表格,而是键值组成的字典(以表格列的形式分别显示键和值),每个值是嵌套的字典或表格。
sys | get host # 返回嵌套字典
sys | get cpu # 返回嵌套表格
sys | get host.sessions.name
文件操作
ls
:显示目录内容。
ls | sort-by size | reverse # 排序
ls | where size > 1kb # 筛选
ls *.md # 匹配 (**/*.md:匹配所有子目录)
cd
,mv
,cp
,rm
,mkdir
(跨平台)。
读取数据
open package.json # 将数据加载为记录对象。
open pokemon.csv # 将数据加载为表格对象。
open Cargo.lock | from toml # 将未识别格式数据按指定格式处理
open Cargo.toml --raw # 按原始文本输出
Nushell当前支持加载以下格式的数据:csv
,ini
,json
,nuon
,SQLite
,toml
,url
,xlsx/xls
,xml
,yaml/yml
……对于不支持的文件格式,Nushell将尝试直接输出文件内容。
Nushell Object Notation (NUON) 是JSON的一个超集,支持注释(
#
开头)。
读取SQLite
open foo.db | query db "select * from some_table"
读取URL指定的文件
fetch https://blog.rust-lang.org/feed.xml
帮助信息
除通过Tab
补全时提供的提示信息外,通过help
命令可查看Nushell命令的使用方法。
输出设置
使用ansi
命令,设置输出文字颜色(ansi reset
回复之前的设置)。
$'(ansi purple_bold)This text is a bold purple!(ansi reset)'
语法
Web终端
tsl0922/ttyd: Share your terminal over the web (github.com)
WebSSH
通过浏览器访问远程的SSH连接终端,其工作模式
+---------+ http +--------+ ssh +-----------+
| browser | <==========> | webssh | <=======> | ssh server|
+---------+ websocket +--------+ ssh +-----------+
webssh
是一个Python模块,可通过pip或Conda安装。启动服务:
wssh --address=0.0.0.0 --port=8080 \ # 服务器地址端口
--ssladdress=0.0.0.0 --sslport=8088 \ # HTTPS地址端口
--certfile="path_to_certfile.crt" \
--keyfile="path_to_keyfile.key" \ # 证书密钥文件
--fbidhttp=True \ # 禁用外部HTTP请求(只允许localhost访问)
--maxconn=20 \ # 最大连接数
--debug --origin='*' #
> /tmp/wssh/wssh.log 2> /tmp/wssh/wss.error.log & # 日志输出,脱离终端
避免证书/密钥文件询问密码。
Cross origin operation is not allowed:设置
--debug --orgin='*'
。
butterfly
Butterfly is an xterm-compatible web terminal based on websocket and tornado.
butterfly.server.py --host=soc3.113.cn --port=57575 --unsecure
使用SSL加密通信
butterfly.server.py --generate-certs --host=soc3.113.cn
butterfly.server.py --generate-user-pkcs=root
butterfly.server.py --host=soc3.113.cn --port=57575
SSL Error on 8 ('172.28.76.6', 65440): [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: EE certificate key too weak (_ssl.c:997)
.
终端复用
Tmux
Tmux可以将终端窗口与会话解绑:
- 从而使任务可以进入后台运行,
- 同时也能在同一终端访问多个已存在的会话;
- 且支持将终端窗口进行拆分,从而同时访问多个会话。
在终端中执行tmux
进入Tmux环境,输入exit
退出。
快捷键
使用Ctrl+b
进入快捷键模式,输入命令对应的快捷键。
快捷键 | 命令 | 说明 |
---|---|---|
? | 显示帮助信息 | |
d | attach | 分离当前会话 |
$ | rename | 重命名会话 |
% | split-window -h | 左右拆分窗格 |
" | split-window | 上下差分窗格 |
$\uparrow\downarrow$-><- | `select-pane -U | D |
x | exit | 退出当前窗格 |
Ctrl+ $\uparrow\downarrow$-><- | 按箭头方向调整窗格大小 | |
q | 显示窗格编号 | |
c | new-window | 新建窗口(状态栏显示窗口信息) |
`p | n | |
w | select-window | 从列表中选择窗口 |
, | rename-window | 窗口重命名 |
会话管理
新建窗格(子窗口)时创建会话,并自动编号(0,1,...
);或者手动创建会话并命名,方便后续访问该会话。
tmux new -s <session-name>
tmux detach # 将当前会话与终端脱离
tmux ls # 列出所有Tmux会话
tmux attach|switch -t <session-id>|<session-name> # 重新接入或切换会话
tmux kill-session -t ......
tmux rename-session -t 0 <new-name>
划分窗格
tmux split-window [-h] # -h => 拆分为左右两个窗口
tmux swap-pane -U|D # 移动当前窗口位置(上移|下移)
窗口管理
除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口并在多个窗口间切换(命令类型与窗格管理)。
tmux new-window -n <window-name> # 默认自动编号
tmux select-window -t <window-number>|<window-name> # 切换窗口
终端主题化工具
oh-my-posh
使用“Oh my Posh 3”来为PowerShell/Bash等终端提供主题功能。
安装
winget install|upgrade oh-my-posh # JanDeDobbeleer.OhMyPosh
安装内容:
oh-my-posh.exe
- Windows executable, added to your $PATH;oh-my-posh-wsl
- Linux executable, added to your $PATH for use in the ==WSL==;themes
- The latest Oh My Posh themes (~\AppData\Local\Programs\oh-my-posh\themes\
)。
安装Linux版本
使用linuxbrew
安装/升级。
brew install oh-my-posh # jandedobbeleer/oh-my-posh/oh-my-posh
brew update && brew upgrade oh-my-posh # 新版本的路径可能发生变化,需要重新开启Shell
安装内容位于$(brew --prefix oh-my-posh)
,包括可执行文件和主题。
应用样式
在Powshell中执行Get-PoshThemes
预览样式。
在PowerShell初始化配置文件($PROFILE
)中设置命令:
# code $PROFILE
oh-my-posh init pwsh --config $env:POSH_THEMES_PATH/paradox.omp.json | Invoke-Expression
Windows内置的PowerShell 5和独立安装的PowerShell 7使用的shell配置都为
pwsh
;
Linux版本命令
预览主题:
THEME_PATH="$(brew --prefix oh-my-posh)/themes"
for file in $THEME_PATH/*.omp.json; do
eval "$(oh-my-posh init bash --config $file)" #**无法预览主题**
echo "$file"
done
设置主题(~/.bashrc
):
eval "$(oh-my-posh init bash --config $THEME_PATH/agnoster.omp.json)"
离线安装
从Github Release直接下载发布的可执行文件以及主题文件,将可执行文件路径添加到系统路径中,配置方法与自动安装一致。
图标
下载带图标的字体(nerdfont
)。优先使用Windows Compatible
的Code字体(Mono
字体不支持连字)。
在PowerShell中安装并设置图标模块:
Install-Module -Name Terminal-Icons -Repository PSGallery -Scope CurrentUser
Import-Module -Name Terminal-Icons # code $PROFILE
git插件
Install-Module posh-git -Scope CurrentUser
Posh-Git将Git状态信息添加到提示,并为Git命令、参数、远程和分支名称添加
Tab
自动补全。
Import-Module posh-git
powerline-go
A beautiful and useful low-latency prompt for your shell, written in go.
sudo apt install golang-go
export GOPROXY=https://goproxy.io
export GO111MODULE=on
go get -u github.com/justjanne/powerline-go
编辑shell配置文件(.bashrc
)
GOPATH=$HOME/go
function _update_ps1() {
PS1="$($GOPATH/bin/powerline-go -error $?)"
}
if [ "$TERM" != "linux" ] && [ -f "$GOPATH/bin/powerline-go" ]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi