Skip to content

文本编辑器

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:搜索 abcn 向下搜索,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 里的 . 最好写成 \.

基于 MIT 许可发布