Linux笔记02-Vim常用操作及技巧

目录

Vim基本用法

插入命令 aio/AIO

定位命令

删除命令(分为 删除字符 和 删除行)

复制和剪切命令

替换和取消命令

搜索和搜索替换命令

保存和退出命令

Vim使用技巧


Vim基本用法

Vim 简介:Vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,

它的作用是建立、编辑、显示文本文件。Vim 没有菜单,只有命令。www.vim.org

Vim 工作模式:

插入命令 aio/AIO

a 在光标所在字符后插入

A 在光标所在行尾插入

i 在光标所在字符前插入

I 在光标所在行行首插入

o 在光标下插入新行

O 在光标上插入新行

【开始演示】

首先,使用vim 命令可以创建一个新文件

回车后,首先进入的是命令模式,可以按下i 之后输入内容。

按下Esc 退出编辑,然后 :wq 保存并退出,可以打开此文件查看:

再次用vim 编辑此文件,要在字符 ”Linux” 之后插入内容,将光标放在其之后,按下 小写的a,可以在其后进行编辑;

或者在本行的任意位置按下 大写的A,也可以将光标定位于本行末尾,然后进行编辑。其他的i/I和o/O 同理。

定位命令

:set nu 设置行号

:set nonu 取消行号

gg 到第一行

G 到最后一行

nG 到第n行

:n 到第n行

$ 移至行尾

0 移至行首

为方便演示,这里将系统的一个文件复制一份:

设置行号:

取消行号:

到第1000行:

删除命令(分为 删除字符 和 删除行)

x 删除光标所在处字符(和Del键一样)

nx 删除光标所在处后n个字符

dd 删除光标所在行

ndd 删除n行

dG 删除光标所在行到文件末尾内容

D 删除光标所在处到行尾内容

:n1,n2d 删除指定范围的行

删除 999-1006 行的内容

复制和剪切命令

yy 复制当前行

nyy 复制当前行以下n行

dd 剪切当前行

ndd 剪切当前行以下n行

p、P 粘贴在当前光标所在行下或行上

替换和取消命令

r 取代光标所在处字符

R 从光标所在处开始替换字符,按Esc结束

u 取消上一步操作(相当于windows的撤销,Ctrl+Z)

搜索和搜索替换命令

/string 搜索指定字符串

搜索时忽略大小写 :set ic

n 搜索指定字符串的下一个出现位置

:%s/old/new/g 全文替换指定字符串

:n1,n2s/old/new/g 在一定范围内替换指定字符串

搜索字符“ftp”,按下“n”继续搜索下一个。

若要忽略大小写,按下 :set ic ,然后搜索

要区别大小写,执行 :set noic

关于替换:

案例演示:将所有的 字符“ftp” 替换为 “renxing”

接下来,指定9089行 到 9095行 的”renxing” 被替换为 “***”,此次使用 /c,将每次询问,需要替换按下y,不需要替换按下n

保存和退出命令

:w 保存修改

:w new_filename 另存为指定文件

:wq 保存修改并退出

ZZ 快捷键,保存修改并退出

:q! 不保存修改退出

:wq! 保存修改并退出(文件所有者及root可使用)——此例发生的情景是root 可以强制覆盖一个其他普通用户创建的文件

【总结】

Vim使用技巧

① 导入命令执行结果 :r !命令

② 定义快捷键 :map 快捷键 触发命令

范例:

: map ^P I#<ESC> 添加注释快捷键

: map ^B 0x 取消注释快捷键

③ 连续行注释

:n1,n2s/^/#/g

:n1,n2s/^#//g

:n1,n2s/^/\/\//g

④ 替换

:ab mymail samlee@lampbrother.net

演示:vim 创建一个新文件,并输入一些内容:

示例 ① 导入命令:

使用 :r /etc/issue 就可将/etc/issue导入到当前光标所在位置:

扩展:在vim之中也可以使用 :!which 查看某个命令:

有时候我们需要在编辑状态下查看并导入某个命令的执行结果。例如要在文档的末尾插入当前时间,就需要先查看当前时间,然后再手动输入。

这样会很麻烦,于是可以直接使用 :r !date 查看并导入当前时间到当前文档。

上面三个的总结:

冒号(:) + r 文档名 可以在不退出编辑的情况下导入某个文件到当前文档;

冒号(:) + ! 命令 可以在不退出编辑的情况下执行系统的某个命令;

冒号(:) + r ! 命令 可以在不退出编辑的情况下导入系统的某个命令的执行结果。

示例 ② 定义快捷键:

此案例演示 注释(行首加 # 号)的快捷键:

常规来讲,需要到行首,然后进入编辑模式,然后输入#号,再然后回到命令模式。那么,如下转化::map ^P I#<ESC>

说明:

冒号(:) + map 定义快捷键;

^P 按下Ctrl+V+p(或者先按下Ctrl+V 再按下 Ctrl+p)(这个是自己定义的,不一定非要是Ctrl+p,也可以是Ctrl+其他字母)

I 回到行首,然后进入编辑模式

# 输入#号

<ESC> 相当于按下ESC退出编辑,回到命令模式

该命令执行完以后,回到任意一行,只要按下Ctrl + p 即可对这一行行首添加 # 号(即 注释该行)

接下来演示取消注释的快捷键(即 删掉行首的#号):map ^B 0x

说明:

冒号(:) + map 定义快捷键;

^B 按下Ctrl+V+b(或者先按下Ctrl+V 再按下 Ctrl+b)(当然,这个也是自定义的)

0 光标回到行首(只回到行首,不进行编辑)

x 删除光标所在位置的字符(即删除行首的第一个字符)

该命令执行完以后,回到任意一行,只要按下Ctrl + b 即可对这一行行首的 # 号删除(即 取消注释)

扩展:比如也可以定义一个快捷键来插入邮箱地址:

分析:假设定义的快捷键是Ctrl + h ,于是可以这样

 :map ^H irenxing9999@qq.com<ESC>

表示:进入插入模式(小写的 i),然后是邮箱地址,然后返回命令模式。

然后按下 Ctrl + h 即可把刚才定义的邮箱快捷键插入到文档:

示例 ③ 连续行注释:

有时候需要连续注释好多行,可以使用

 :n1,n2s/^/#/g

说明:

冒号(:) + n1,n2 从第n1行开始,到第n2行结束;

/^ (shift 6) “开始”的意思,可以参考正则的表示意义

/#/ #号,注释的意思

g 不进行询问

* 现在要对第3到7行进行注释,就使用

:3,7s/^/#/g

相反的,如果需要取消这些注释,就使用

 :n1,n2s/^#//g

冒号(:) + n1,n2 从第n1行开始,到第n2行结束;

/^# 以#号开始;

// 空的

g 不进行询问

* 现在要对第3到7行取消刚才的注释,就使用 :3,7s/^#//g

补充说明一下:如果是 :3,7s/^#//g 表示只去掉行首的#号,如果要去掉指定行的所有的#行,使用 :3,7s/#//g,即去掉 ^ 符号即可。

对于PHP等很多编程语言,注释用的是 双斜杠 // ,那么就要这样使用: :n1,n2s/^/\/\//g

/^/ 表示开头 和 分隔符

\/\/ 表示双斜杠 // ,但是需要转意,即 \/\/

取消注释同理:

示例 ④ 替换:

:ab mymail samlee@lampbrother.net

意思就是,可以自定义一个符号(字符串),表示的是另外一个比较长的字符串。

比如说:当我希望输入 aa 的 时候变成这样一句话: HelloWorld...

就可以使用 :ab aa HelloWorld...

然后,当我输入aa ,然后空格或者回车:

总结扩展说明:

如果想要永久保存这样的配置,只需要在对应的用户的家目录下创建一个文件 .vimrc

例如,root用户,这样的命令:

然后在这个文件里面编辑,然后保存:

这个配置文件的含义是:永远显示行号,还有对应的快捷键。

此时如果新建一个文档或者打开已有文档,就会默认显示行号,并且当输入某个快捷键的时候,就会替换成设置好的对应的文字。

记住:如果是root用户,配置文件就是在 /root/.vimrc ;如果是普通用户,配置文件就是在 /home/username/.vimrc

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮尘笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值