🎬 HoRain 云小助手个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

📊 多行删除方法速查表

🔧 8种核心删除方法详解

方法1:基础删除命令

单行删除

删除到行尾/行首

方法2:范围删除(最常用)

绝对行号删除

相对行号删除

使用标记删除

方法3:可视模式删除(直观选择)

进入可视模式

可视模式操作流程

块删除示例

方法4:模式匹配删除(批量处理)

删除包含特定模式的行

删除不包含模式的行(反向删除)

组合条件删除

方法5:文本对象删除(语义化操作)

删除单词

删除句子和段落

删除引号/括号内容

方法6:高级组合技巧

删除到字符

删除到行号

删除到搜索位置

方法7:寄存器操作(安全删除)

使用黑洞寄存器

指定寄存器删除

查看寄存器内容

方法8:宏和脚本批量删除

录制宏删除

使用全局命令配合

🎯 实战场景应用

场景1:清理配置文件注释

场景2:清理日志文件

场景3:处理代码文件

场景4:处理CSV/TSV数据

⚙️ Vim配置优化

添加实用映射

创建自定义命令

🔍 删除操作调试技巧

撤销与重做

查看删除历史

安全删除(先预览)

📈 性能优化建议

大文件删除优化

内存优化

💎 最佳实践总结

删除策略选择指南

安全操作黄金法则

一键删除脚本示例


掌握Vim多行删除是高效文本编辑的核心技能。我将从基础到高级,系统讲解8种删除多行的实用方法。

📊 多行删除方法速查表

方法

命令

适用场景

特点

单行删除

dd

删除当前行

最基础

多行删除

ndd

删除n行

指定行数

范围删除

:m,nd

删除m到n行

精确范围

可视模式

V+j/k+d

可视化选择删除

直观灵活

模式匹配

:g/pattern/d

删除匹配行

批量处理

反向删除

:v/pattern/d

保留匹配行

反向选择

删除到标记

d'a

删除到标记a

快速导航

删除段落

dap/dip

删除段落

语义操作

🔧 8种核心删除方法详解

方法1:基础删除命令

单行删除
dd      " 删除当前行(实际是剪切,可粘贴)
3dd     " 删除当前行及后续2行(共3行)
删除到行尾/行首
D       " 删除从光标到行尾的内容(相当于 d$)
d0      " 删除从光标到行首的内容
d^      " 删除从光标到第一个非空字符

方法2:范围删除(最常用)

绝对行号删除
:10,20d     " 删除第10到20行
:.,$d       " 删除从当前行到文件末尾
:1,.d       " 删除从第1行到当前行
:%d         " 删除整个文件(清空)
相对行号删除
:.,+5d      " 删除当前行及后面5行
:.,-3d      " 删除当前行及前面3行
:10,+10d    " 删除第10行及后面10行
使用标记删除
ma          " 在当前行设置标记a(标记可以是a-z)
:'a,'bd     " 删除从标记a到标记b之间的行
:'a,.d      " 删除从标记a到当前行

方法3:可视模式删除(直观选择)

进入可视模式
v           " 字符可视模式(按字符选择)
V           " 行可视模式(按行选择,最常用)
Ctrl+v      " 块可视模式(矩形选择)
可视模式操作流程
V           " 进入行可视模式
jjjj        " 向下选择4行(或使用 4j)
d           " 删除选中的行
块删除示例
Ctrl+v      " 进入块可视模式
jjjj        " 向下选择4行
llll        " 向右选择4列
d           " 删除选中的块

方法4:模式匹配删除(批量处理)

删除包含特定模式的行
:g/error/d          " 删除所有包含"error"的行
:g/^#/d             " 删除所有以#开头的行(注释)
:g/^\s*$/d          " 删除所有空行(包括空格组成的行)
:g/pattern/d | echo "Done"  " 删除后显示消息
删除不包含模式的行(反向删除)
:v/important/d      " 删除所有不包含"important"的行
:g!/TODO/d          " 同上,删除所有不包含"TODO"的行
组合条件删除
:g/error/.,+2d      " 删除包含"error"的行及后面2行
:g/start/,/end/d    " 删除从包含"start"到包含"end"的所有行

方法5:文本对象删除(语义化操作)

删除单词
dw      " 删除从光标到下一个单词开头
de      " 删除从光标到当前单词末尾
daw     " 删除整个单词(包括周围空格)
diw     " 删除单词内部(不包括周围空格)
删除句子和段落
das     " 删除整个句子
dis     " 删除句子内部
dap     " 删除整个段落(包括空行)
dip     " 删除段落内部(不包括周围空行)
删除引号/括号内容
di"     " 删除双引号内的内容(不包括引号)
da"     " 删除双引号及内容
di(     " 删除圆括号内的内容
da(     " 删除圆括号及内容
di{     " 删除花括号内的内容
da{     " 删除花括号及内容
di[     " 删除方括号内的内容
da[     " 删除方括号及内容

方法6:高级组合技巧

删除到字符
dtx     " 删除从光标到下一个x字符(不包括x)
dfx     " 删除从光标到下一个x字符(包括x)
删除到行号
d10G    " 删除从当前行到第10行
dG      " 删除从当前行到文件末尾
dgg     " 删除从当前行到文件开头
删除到搜索位置
d/pattern    " 删除从光标到pattern第一次出现的位置
d?pattern    " 反向删除到pattern

方法7:寄存器操作(安全删除)

使用黑洞寄存器
"_dd    " 删除当前行但不保存到寄存器(彻底删除)
"_dap   " 删除整个段落但不保存
指定寄存器删除
"add    " 删除当前行到寄存器a
"b5dd   " 删除5行到寄存器b
查看寄存器内容
:reg     " 查看所有寄存器内容
:reg a   " 查看寄存器a的内容

方法8:宏和脚本批量删除

录制宏删除
qa          " 开始录制宏到寄存器a
/error<CR>  " 搜索error
dd          " 删除当前行
q           " 停止录制
@a          " 执行宏
100@a       " 执行宏100次
使用全局命令配合
:g/^#/normal dd    " 删除所有以#开头的行
:g/pattern/normal dap  " 删除所有包含pattern的段落

🎯 实战场景应用

场景1:清理配置文件注释

# 删除所有注释行(以#或//开头)
:g/^\s*#/d          " 删除#注释
:g/^\s*\/\//d       " 删除//注释

# 删除行尾注释
:%s/#.*$//g         " 删除#及其后的内容
:%s/\/\/.*$//g      " 删除//及其后的内容

场景2:清理日志文件

# 删除空行
:g/^\s*$/d

# 删除包含特定错误的行
:g/ERROR\|FATAL/d

# 删除时间戳范围
:g/2023-10-01/,/2023-10-02/d

# 保留包含特定关键词的行,删除其他
:v/important\|warning/d

场景3:处理代码文件

# 删除所有console.log
:g/console\.log/d

# 删除TODO注释
:g/\/\/\s*TODO/d

# 删除空函数
:g/{}/d

# 删除特定函数
:g/function test/,/^}/d

场景4:处理CSV/TSV数据

# 删除包含空值的行
:g/,,/d              " CSV空值
:g/\t\t/d            " TSV空值

# 删除前N行(表头)
:1,5d                " 删除前5行

# 删除后N行(注释)
:-5,$d               " 删除最后5行

⚙️ Vim配置优化

添加实用映射

" 在~/.vimrc中添加以下配置

" 快速删除到行尾(Ctrl+D)
nnoremap <C-d> D

" 快速删除当前行(Ctrl+X)
nnoremap <C-x> dd

" 删除当前单词(Alt+D)
nnoremap <M-d> daw

" 删除当前段落
nnoremap <leader>dp dap

" 删除所有尾随空格
nnoremap <leader>ds :%s/\s\+$//g<CR>

" 删除重复行
nnoremap <leader>dd :g/^\(.*\)$\n\1$/d<CR>

" 删除空行
nnoremap <leader>de :g/^\s*$/d<CR>

创建自定义命令

" 删除当前时间之后的行
command! -range=% DeleteAfterTime <line1>,<line2>g/^\d\{4\}-\d\{2\}-\d\{2\}/d

" 删除匹配模式的行并计数
command! -nargs=1 DeletePattern let cnt=0 | g/<args>/d | let cnt=cnt+1 | echo "Deleted " . cnt . " lines"

🔍 删除操作调试技巧

撤销与重做

u       " 撤销上一次删除
Ctrl+r  " 重做
U       " 撤销当前行的所有修改

查看删除历史

:changes        " 查看修改历史
:undolist       " 查看撤销历史
g+              " 按时间向前跳转修改
g-              " 按时间向后跳转修改

安全删除(先预览)

# 使用global命令预览
:g/pattern/p    " 预览匹配的行
:g/pattern/#    " 显示行号

# 确认后再删除
:g/pattern/d _  " 删除到黑洞寄存器(可撤销)

📈 性能优化建议

大文件删除优化

# 禁用语法高亮(加快处理速度)
:syn off

# 禁用折叠
:set nofoldenable

# 使用更高效的模式
:g/pattern/d    " 比多次dd更快

# 分块处理大文件
:1,10000d       " 先删除前10000行
:10001,20000d   " 再删除下一块

内存优化

# 设置交换文件位置
:set directory=/tmp

# 增加撤销级别
:set undolevels=1000

# 禁用备份
:set nobackup
:set nowritebackup

💎 最佳实践总结

删除策略选择指南

场景

推荐方法

理由

少量连续行

nddV+j/k+d

快速直观

精确范围

:m,nd

精确控制

批量模式匹配

:g/pattern/d

高效批量

保留特定内容

:v/pattern/d

反向选择

代码块删除

dap/dip

语义化操作

安全删除

"_d:g/pattern/d _

可恢复

大文件处理

分块删除

避免内存问题

安全操作黄金法则

  1. 先备份后操作

    # 在终端中备份文件
    cp file.txt file.txt.backup
    
    # 或在Vim中
    :w file.txt.backup
  2. 先预览再删除

    :g/pattern/p    " 先查看匹配行
    :g/pattern/d    " 确认后再删除
  3. 使用撤销保护

    :set undofile    " 启用持久撤销
    :set undodir=~/.vim/undo  " 设置撤销目录
  4. 重要删除前保存

    :w               " 删除前保存
    :g/pattern/d
    :w               " 删除后保存
  5. 使用寄存器恢复

    "add             " 删除到寄存器a
    "ap              " 从寄存器a粘贴恢复

一键删除脚本示例

" 在~/.vimrc中添加实用函数

" 删除重复行(保留第一个)
function! DeleteDuplicateLines()
    :sort u
endfunction
command! Ddup call DeleteDuplicateLines()

" 删除行尾空格
function! DeleteTrailingSpaces()
    let l = line(".")
    let c = col(".")
    :%s/\s\+$//g
    call cursor(l, c)
endfunction
command! Dtrail call DeleteTrailingSpaces()

" 删除空行(包括只有空格的行)
function! DeleteEmptyLines()
    :g/^\s*$/d
endfunction
command! Dempty call DeleteEmptyLines()

" 删除当前函数
function! DeleteCurrentFunction()
    normal! [[
    normal! V][d
endfunction
command! Dfunc call DeleteCurrentFunction()

通过掌握这些多行删除技巧,您将能高效处理各种文本编辑任务。记住:先预览,后操作;先备份,后删除

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐