读书笔记《Vim实用技巧》:命令行模式
原创- 2023-12-21 15:08:47
- 678
一、技巧27 认识Vim的命令行模式
按下 : 键时,就会切换到命令行模式。
可以批量编辑文件里的文本,不需要使用可视模式。
我们常用的是 :set nonu :set paste :w :wq
读写文件、创建新标签、分隔窗口、操作参数列表、缓冲区列表。
命令 |
用途 |
:[range]delete [x] |
删除指定范围内的行[到寄存器x中] |
:[range]yank [x] |
复制指定范围内的行[到寄存器x中] |
:[range]put [x] |
在指定行后粘贴寄存器x中的内容 |
:[range]copy |
把指定范围内的行拷贝到指定行下 |
:[range]move |
把指定范围内的行移动到指定行下 |
:[range]jion |
连接指定范围内的行 |
:[range]normal{commands} |
对指定范围内的每一行执行普通模式命令{commands} |
:[range]substitute/{pattern}/{string}/{flags} |
对指定范围内出现{pattern}的地方替换为{string} |
:[range]global/{pattern}/[cmd] |
对指定范围内匹配{pattern}的所有行执行Ex命令{cmd} |
二、技巧28 在一行或多行连续行上执行命令
1.用行号作为地址
:1 //跳到文件首行 :$ //跳到文件的尾行 :5p //跳转到第5行,然后显示第5行内容 :3d //跳转到第3行并删除第3行,不需要3G然后再dd
2.用地址指定一个范围
:2,5p //显示第2行到第5行的内容,包含第2行和第5行 :2 //跳转到第2行 :.,$p //显示当前行到末尾的所有行,.标识当前行 :%p :1,$p //显示当前文件的所有行,%标识当前文件的所有行 :%s/Practical/Pragmatic/ //把每一行的第1个Practical替换为Pragmatic
3.用高亮选区指定范围
2G VG 高亮选中2到末行 :'<,'>p 显示高亮选区< 开始,>结束的行
4.用模式指定范围
:/<html>/,/<\/html>/p //显示<html>开始到<\/html>结束的行 等同于 :2,5p
5.用偏移对地址进行修正
:/<html>/+1,/<\/html>/-1p //显示不包含<html>、<\/html>的行 :2 :.,.+3p 等同于 :2,5p
6.结论
符号 |
地址 |
1 |
文件的第一行 |
$ |
文件的最后一行 |
0 |
虚拟行,位于文件的第一行上面 |
. |
光标所在行,当前行 |
'm |
包含位置标记m的行 |
'< |
高亮选区的起始行 |
'> |
高亮选区的结束行 |
% |
整个文件(:1,$ 的简写形式) |
三、技巧29 使用 :t 和 :m 命令复制和移动行
:copy = :t //可以把一行或者多行从文档的一部分复制到另一部分,copy to :m //可以不 一行或多行移动到文档的其他地方
1.用 :t 命令复制行(ex命令影响范围广且距离远)
:6copy. //复制第6行到当前行下 :6t.
命令 |
用途 |
:6t. |
把第6行复制到当前行下方 |
:t6 |
把当前行复制到第6行下方 |
:t. |
复制当前行,等同于yyp |
:t$ |
把当前行复制到文本末尾 |
:'<,'>t0 |
把高亮选中的行复制到文件开头 |
2.用 :m 命令移动行
Vjj //高亮当前行,然后往下2行也都高亮,选中 :'<,'>m$ //把高亮选区移动到文件结尾 等同于 Vjj dGp //先删除高亮选区,跳转到文件结尾,然后再粘贴刚删除的文本
四、技巧30 在指定范围上执行普通模式命令
A;Esc //先在第1行行尾插入; jVG //向下选中高亮到最后一行 :'<,'>normal . //高亮选区的重复上一次的操作,都在行尾插入;