最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

oeasy教您玩轉(zhuǎn)vim - 85 - # 全局命令

2022-01-10 10:36 作者:oeasy  | 我要投稿

?"h", ?"b", ?"f", ?"d", ?"e", ?"a", ?"c",]```- `:g/\[/+1,/\]/-1sort`- 在這個(gè)中括號(hào)的范圍內(nèi)- 排序## 總結(jié)- 這次研究的是global- `:[range]global/{pattern}/{command}` ? ?- range是執(zhí)行的范圍 ? ?- pattern是搜索的模式 ? ?- command執(zhí)行的命令- 命令有很多 ? ?- d 刪除 ? ?- m 移動(dòng) ? ?- t 拷貝 ? ?- p 打印 ? ?- s 替換 ? ?- sort 排序 ? ?- update 更新- global是很好用的內(nèi)部命令- vim還可以執(zhí)行外部命令呢!- 怎么玩呢???- 下次再說!

全局命令 global

回憶

  • 可以定義自己的命令command

  • 也可以執(zhí)行自定義的命令

  • 可以修改刪除命令

  • 命令可以帶上

    • 參數(shù) argument

    • 范圍 range

  • 除了自定義命令之外

  • 系統(tǒng)也有一些built-in的命令

  • 系統(tǒng)有什么好玩的命令么???

global全局命令

  • :h global

  • :[range]global/{pattern}/{command}

    • :1,$

    • range是執(zhí)行的范圍

    • pattern是搜索的模式

    • command執(zhí)行的命令

  • 如果在這個(gè)范圍里面

  • 匹配這個(gè)模式

    • :global

  • 或者不匹配這個(gè)模式

    • :g!:v

  • 就執(zhí)行這個(gè)命令

  • 我們來看個(gè)例子

先搜再刪

  • 源代碼如下

const oeasy = 1; console.log("oeasy: ", oeasy);const o2z = 2; console.log("o2z: ", o2z);const o3z = 3; console.log("o3z: ", o3z);

  • :g/console/d

    • 把所有帶console的行都刪除

  • :g/const/d

    • 把所有帶const的行都刪除

    • 整行刪除

    • 刪完之后u回來

  • :g/console/d _

    • 刪除帶console行之后

    • _ 的意思是將結(jié)果放入黑洞寄存器

  • :g/console/d|update

    • 刪除完成之后

    • |update 進(jìn)行保存

切換分割符

  • :g@console@d

    • 把分隔符從/變成@`

  • 什么不能當(dāng)分割符

    • 大小寫字符

    • 數(shù)字

    • ", |, ?\

  • 什么可以當(dāng)分隔符

    • :g=console=d

    • :g?console?d

  • :g+//+s/oeasy/o1z/g

    • s的意思是subtitute

    • 把這些行中的oeasy換成o1z

    • 并且是global替換,全都替換

    • 完成批量替換

    • 查找的模式為//


    • 分割符

    • global全局命令

    • g


    • //

    • s/oeasy/o1z/g

    • 把所有包含//行中,把oeasy全部替換為o1z

反轉(zhuǎn)模式

  • :g/console/d

    • 把所有帶console的行都刪除

  • :v/console/d

    • 把所有不帶console的行都刪除

  • :g!/console/d

    • g!v一樣

匹配模式

  • 我們猜猜下面的命令會(huì)刪除那些行?

  • :g/o2z\|o3z/d

  • :g/[0-9]/d:g/\d/d

刪除空行

  • :g/^$/d

    • ^$開頭之后就是結(jié)束

    • 沒有任何字符的行

    • 就delete刪掉

  • :g/^\s*$/d

    • ^$開頭結(jié)尾之間只有空格和tab

    • 沒有任何其他字符

    • 就delete刪掉

配合范圍range

  • :1,5g/console/d

    • 從1到5行

    • 出現(xiàn)console的行

    • 刪除

  • :.,5g/console/d

    • 從當(dāng)前行到第5行

  • :3,.g/console/d

    • 從3到當(dāng)前行

  • :3g/console/d

    • 只搜索第3行

  • 特定行

    • . 當(dāng)前行

    • $ 末行

    • +n 當(dāng)前行之后的第n行

再來一個(gè)

const oneMillion = 1000000;const oneThousand = 1000;const one = 1;

  • :g/0\{3,6\}/d

  • 出現(xiàn)3到6個(gè)零的行

  • u回來

  • 可以把數(shù)值分別調(diào)整一下

    • :g/0\{4,6\}/d

執(zhí)行命令command

  • 除了d刪除之外,還可以執(zhí)行normal正常模式下命令

  • :g/.*/normal A;

    • .*代表有0到任意多個(gè)非空字符

    • 空行^$有0個(gè)字符也滿足

    • normal A; 每一行都在結(jié)尾加分號(hào);

  • :g/./normal A;

    • .代表有一個(gè)字符,任意字符都可以

    • 空行^$一個(gè)字符都沒有,不滿足

    • 非空行 normal A; 在結(jié)尾加分號(hào);

執(zhí)行宏macro

const oeasy = 1console.log("oeasy: ", oeasy);const o2z = 2console.log("o2z: ", o2z);const o3z = 3console.log("o3z: ", o3z);

  • qaA;<Esc>q

    • 定義一個(gè)宏macro叫做a

    • a的功能就是A;<Esc>

    • 在行尾插入分號(hào)然后退出回到正常模式

  • :reg a

    • 查看宏a

  • :g/const/normal @a

    • 正常模式下執(zhí)行宏a

    • 對(duì)于可以匹配const的行

    • const

    • normal @a

  • :2,$g/const/normal @a

    • 正常模式下執(zhí)行宏a

    • 對(duì)于可以匹配const的行

    • 從第2行到末行

    • 2,$

    • const

    • :normal @a

遞歸使用全局命令

const oeasy = 1console.log("oeasy: ", oeasy);const o2z = 2console.log("o2z: ", o2z);const o3z = 3console.log("o3z: ", o3z);

  • :g/console/g/two/d

    • 先搜包含console的所有行

    • 在搜索結(jié)果中搜o2z

    • 找到的結(jié)果刪除

  • u回來

  • :g/console/v/two/d

    • 先搜包含console的所有行

    • 在搜索結(jié)果中搜不包含o2z的

    • 找到的結(jié)果刪除

打印命令print

  • :g/const/p

    • 找到匹配const模式的行

    • 打印print

移動(dòng)命令move

  • :g/^/m 0

    • ^ 行的開頭,所有的行都符合,包括空行

    • m 移動(dòng) move

    • 0 移動(dòng)到第0行 最初

  • 每一行都要挪到第一行

  • 最后一行最后執(zhí)行

  • 整體就是上下顛倒

復(fù)制命令copy 或 t

const oeasy = 1console.log("oeasy: ", oeasy);// TODO oeasyconst o2z = 2console.log("o2z: ", o2z);// TODO o2zconst o3z = 3console.log("o3z: ", o3z);// TODO o3z

  • :g/TODO/t $

    • 包含TODO的行選中

    • 執(zhí)行t $ 拷貝到末行

  • :g/TODO/m 0

    • 把TODO行都移動(dòng)到最上面

排序命令sort

const arrayA = [ ?"h", ?"b", ?"f", ?"d", ?"e", ?"a", ?"c", ]

  • :g/\[/+1,/\]/-1sort

  • 在這個(gè)中括號(hào)的范圍內(nèi)

  • 排序

總結(jié)

  • 這次研究的是global

  • :[range]global/{pattern}/{command}

    • range是執(zhí)行的范圍

    • pattern是搜索的模式

    • command執(zhí)行的命令

  • 命令有很多

    • d 刪除

    • m 移動(dòng)

    • t 拷貝

    • p 打印

    • s 替換

    • sort 排序

    • update 更新

  • global是很好用的內(nèi)部命令

  • vim還可以執(zhí)行外部命令呢!

  • 怎么玩呢???

  • 下次再說!


oeasy教您玩轉(zhuǎn)vim - 85 - # 全局命令的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
双鸭山市| 赫章县| 德州市| 白城市| 阳谷县| 闸北区| 盈江县| 东兴市| 理塘县| 巩义市| 阿鲁科尔沁旗| 佳木斯市| 宣汉县| 那坡县| 黄浦区| 闵行区| 富裕县| 荃湾区| 临清市| 邵东县| 汽车| 全南县| 磐石市| 稻城县| 界首市| 大田县| 钦州市| 临泽县| 措美县| 泽州县| 栖霞市| 全南县| 密云县| 犍为县| 古交市| 台前县| 郸城县| 阿坝县| 观塘区| 朝阳市| 扶绥县|