6、Vim

作者: 一个反派人物 | 来源:发表于2020-11-05 12:27 被阅读0次

1 VIM快捷键

o在当前光标下一行插入
O在当前光标上一行插入
^跳转到行首
$跳转到行尾
G跳转到最后1行
gg跳转到第1行
ngg跳转到第n行
dd剪切或删除
5dd剪切或删除当前行及其下文一共5行的数据
dG删除当前行至最后1行
d^删除当前光标前一个字符到行首
d$删除当前光标到行首
dw删除当前光标到单词结尾
p在当前光标的下一行粘贴
5p在当前光标的下一行进行5次粘贴
P在当前光标的上一行粘贴
5P在当前光标的上一行进行5次粘贴
yy复制
5yy复制当前行及其下文一共5行的数据
u撤销上一次的操作
ctrl + r撤销后重做上一次操作

2 文件异常退出的问题

当上次打开vi编辑文件,没保存就关闭ssh会话时,再次打开文件会报错。


因为上次编辑的内容保存在内存中,退出时为防数据丢失,会自动生成一个.原文件名的临时文件,保存了未保存的内容。此时输入R就能恢复未保存的内容,保存退出后,需手动删除.原文件名的临时文件,避免下次打开文件继续提示。

以上图为例,删除.f1.txt.swp文件

[root@node1 ~]$ rm -f .f1.txt.swp

3 底线命令模式

:/关键字搜索,回车后按n,向下查找,按N,向上查找
:!cmd执行shell命令

:set number 或 set nu显示行号
:set nonu关闭显示行号
:50快速跳转到第50行
:set ignorecase 或 set ic忽略大小写常配合查找使用
:set noic区分大小写
:set list显示每行的结束字符$

:1,4move9将1~4行的内容移动到第9行后
:1,4copy9将1~4行的内容复制到第9行后

替换
(1)带g,每行匹配的内容全部替换
:1,3s/patten1/XXX/g将1~3行的pattern1替换为XXX
:%s/patten1/XXX/g将全文的pattern1替换为XXX
:2,$%s/patten1/XXX/g将第2行至结尾的pattern1替换为XXX
(2)不带g,每行匹配的内容只替换第一个
:1,3s/patten1/XXX/将1~3行的第一个pattern1替换为XXX
:%s/patten1/XXX/将全文每行的第一个pattern1替换为XXX
:2,$%s/patten1/XXX/g将第2行至结尾每行的第一个pattern1替换为XXX
(3)使用\1、\2代表前面()内的匹配部分
:%s/1(.*)2/3\14/g将12中间的部分,前面添加3后面添加4
(4)使用&代表前面pattern匹配的内容
:%s/1.*2/3&4/g将1.*2这个pattern代表的内容,前面添加3后面添加4
(5)删除\r
vim -b xxx.txt二进制模式打开文件,\r显示成^M
:%s/\r//g删除\r

4 列模式

ctrl + v进入列编辑,按方向键选择要编辑的部分
列插入:
shitf + i,输入内容后按esc
列删除:
x

5 配置vimrc显示作者、时间等信息

配置/etc/vim/vimrc文件,在配置文件最后添加如下信息。

"在文件中按F7调用
nmap <F7> ms:call TitleDet() <cr>'s
function AddTitle()
    call append (0,"/*********************************************************************")
    call append (1," * Author           : WangHaoTian")
    call append (2," * Email            : wanghaotian87@126.com")
    call append (3," * Last modified    : ".strftime("%Y-%m-%d %H:%M"))
    call append (4," * Filename         : ".expand("%:t"))
    call append (5," * Description      : ")
    call append (6," * ******************************************************************/")
    echohl WarningMsg | echo "Adding coryright Successfully !!" | echohl None
endfunction
"在上面代码中添加自己的版权信息
"更新最近修改时间和文件名
function UpdateTitle()
    normal m'
    execute '/* Last modified\s*:/s@:.*$@\=strftime(": %Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/* Filename\s*:/s@:.*$@\=": ".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Updating coryright Successfully !!" | echohl None
endfunction
"判断前6行代码里面,是否有Last modified这个单词,
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet()
    let n=1
    while n<7
        let line = getline(n)
        if line =~ '^\s*\*\s*Last\smodified\s*:\s*\S*.*$'
            call UpdateTitle()
            return
        endif
        let n = n+1
    endwhile
    call AddTitle()
endfunction

相关文章

  • [Linux]Centos6 Vim 从 7.4 升级到 8.1

    工作环境: centos 6 vim 7.15 升级到 vim 8.1 完整的过程: 卸载原来的 vim 下载 v...

  • 简洁的vim配置

    Title: 简洁的vim配置date: 2018/6/9 22:04:12tags: 工具 linux vim配...

  • vim入门

    一、vim模式 vim具有6种基本模式和5种派生模式,这里简单介绍下6种基本模式:1.普通模式(Normal mo...

  • vim编译器的使用

    为了学习实验楼的知识,我又要学习vim编译器的使用啦。emm那就在这儿进行记录啦 vim模式介绍 一.vim有6种...

  • 6.Vim使用

    Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用...

  • vim

    vim光标尾shift+4 vim光标首shift+6 跳到文本的最后一行按“G”,即“shift+g” 跳到首行gg

  • Vim 常用命令

    VIM 命令 文件命令 VIM的模式 VIM导航命令 VIM插入命令 VIM查找命令 VIM替换命令 VIM使用技...

  • 知行社的前端早读课 第11期

    我早年都是用 VIM 写程序,也说不上特別喜欢,主要是当时还不知道怎么退出 VIM 《《深入理解ES6》教程学习笔...

  • shell-实战-收集日志入库(mysql)-发送邮件(mail

    backupdb.sh 'vim /etc/mail.rc' crontab设置,每天6点定时执行

  • centos7-关闭IPV6

    1、 vim /etc/default/grub 设置ipv6.disable=1 2、生产grub.cfg 文件...

网友评论

      本文标题:6、Vim

      本文链接:https://www.haomeiwen.com/subject/ntktbktx.html