主题
文本编辑器
vi/vim
vim 是 vi 的增强版。
命令模式
光标控制
h、←:左。j、↓:下。k、↑:上。l、→:右。^:移动到行首。$:移动到行尾。gg:移动到文件顶部。G:移动到文件底部。
编辑
x:删除光标所在字符。dd:删除当前行。d$:删除从光标到行尾的内容。dw:删除一个单词。v:进入可视模式;选中后按y复制。yy:复制当前行。p:粘贴。u:撤销。
插入模式
i:在当前光标处进入插入模式。a:在光标后进入插入模式。o:在下一行进入插入模式。
底行命令模式
:q:退出。:q!:不保存退出。:wq:保存并退出。:set nu:显示行号。/abc:搜索abc;n向下搜索,N向上搜索。:s/foo/bar/g:替换当前行中的匹配项。:%s/foo/bar/g:替换全文中的匹配项。:%s/foo/bar/gc:替换全文中的匹配项,每次确认。:set paste:启用粘贴模式。
nano
安装:
bash
apt install -y nano可通过 ~/.nanorc 调整默认行为:
bash
set autoindent
set mouse
set tabsize 4
set nowrap
set linenumbers批量查找与替换
递归查找目录中包含“旧文本”的文件,并将其中的“旧文本”全部替换为“新文本”:
bash
grep -rlZ "旧文本" 目录 | xargs -0 sed -i 's/旧文本/新文本/g'排除 .log 文件:
bash
grep -rlZ --exclude='*.log' "旧文本" 目录 | xargs -0 sed -i 's/旧文本/新文本/g'命令参数说明
grep
-r:递归查找目录中的文件。-l:只输出包含匹配内容的文件路径。-Z:使用空字符分隔文件路径。--exclude='*.log':排除文件名与*.log匹配的文件,可重复使用以排除多种文件。
xargs
-0:以空字符解析文件路径,可正确处理包含空格等特殊字符的文件名。
sed
-i:直接修改原文件。s/旧文本/新文本/g:将每一行中的所有“旧文本”替换为“新文本”。
sed -i 会直接修改原文件,执行前应确认查找目录和替换内容。
旧文本里如果包含正则特殊字符,需要转义。比如 IP 里的 . 最好写成 \.。
