zoukankan      html  css  js  c++  java
  • Linux文本编辑器vim

    Linux文本编辑器vim

    一、vim

    vim 是 “vimsual interface IMproved”的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。

    vim 不是一个排版程序,它不像MS Word 或 WPS 那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。

    vim 是全屏幕文本编辑器,它没有菜单,只有命令。

    二、文本编辑器的模式

    1)命令行模式
    2)输入模式、编辑模式
    3)末行模式
    4)替换模式
    

    1、命令行模式

    存盘 ZZ 保存退出
    
    光标移动:
    移动光标 h j k l 左 下 上 右 
    光标移到本行开头home 
    移到本行末尾 end 
    光标移到末尾 G 
    光标移到开头gg 
    光标移动一个单词w
    
    
    粘贴复制:
    复制一行 yy 复制 n行 nyy
    粘贴 p
    
    
    删除:
    删除字符 x 向后删除 X 向前删除
    删除一行 dd ndd
    删除一个单词 dw
    
    
    撤销:
    撤销操作 u 向上一步 . 重复上一次操作
    
    
    查找:
    查找/string define  转义字符 查找“/bin/bash” //bin/bash
    
    
    删除与修改
    “编辑”是指文字的添加、修改以及删除,甚至包括文字区块的移动、复制等。
    在vim 中一般认为输入与编辑是两个概念。
    编辑是在命令模式下进行的,先利用命令移动光标来定位到要进行编辑的地方,然后再使用相应的命令进行编辑;而输入是在插入模式下进行的。
    
    
    在命令模式下常用的编辑命令:
    x     删除光标所在字符。
    dd     删除光标所在的行。
    r     修改光标所在字符,r 后是要修正的字符。
    R     进入替换状态,输入的文本会覆盖原先的资料。
    s     删除光标所在字符,并进入输入模式。
    S     删除光标所在的行,并进入输入模式。
    cc     修改整行文字。
    u     撤消上一次操作。
    .     重复上一次操作。
    

    2、编辑模式

    输入模式
    在输入模式下,屏幕的左下方会出现INSERT 字样。
    在输入状态下,用户可以输入文本的内容                                                      
    在插入模式下也可以删除字符,而标准的vim 编辑器在编辑状态下不能删除字符,只能插入字符
    
    如何从命令行模式进入输入模式
    a 从光标所在位置后面开始输入资料,光标后的资料随增加的资料向后移动。
    A 从光标所在行最后面的位置开始输入资料。
    
    插入(insert)
    i 从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。
    I 从光标所在行的第一个非空白字符前面开始插入资料。
    
    开始(open)
    o 在光标所在行下新增一行并进入输入模式。
    O 在光标所在行上方新增一行并进入输入模式。
    
    如何退出输入模式
    esc
    

    3、末行模式

    末行模式
    只要在命令模式下输入命令“:”即可进入末行模式。
    
    在末行模式下,可以进行保存文件、退出vim、进行查找和替换等操作。
    :
    
    当同时编辑多个文件时  因为同一时间只能显示一个文件,所以在VI中切换打开的文件可以使用N或n来切换打开的文件
    :n 切换下一个文件
    :N 切换上一个文件
    :q 退出
    :q! 强制退出不保存
    :w
    :wq
    
    
    替换
    :s/old/new 只替换光标所在行的第一个old string
    :s/old/new/g 将本行(光标)的所有old string替换为new string   g global  n代表一个行号
    :%s/old/new/g 将本文中所有的old string替换为new string
    :1,2s/old/new/g 替换1到2行中的old string为new string
    :.,2s/old/new/g .代表光标所在行 当前行到第二行的
    :2,$s/old/new/g 替换2到最后一行中的old string为new string
    
    
    :set nu 显示行号
    :set nonu
    :!command 在vim编辑器中执行一条命令(不许要退出当前的编辑,可以在编辑器中执行命令,类似退出编辑器执行命令)
    
    
    查找
    /string                    将光标定位到string 所在的行。
    ?string                    将光标移动到最近的一个包含 string 字符串的行
    :n                          把光标定位到文件的第n 行。
    
    
    保存文档
    可以用:n,mw filename 命令将第n 行到第m 行的文字存放的所指定的filename 文件中。
    

    4、替换模式

    命令行下按R键进入替换模式
    
    退出
    esc
    

    相关配置文件:

    ~/.viminfo vim历史编辑文档
    
    ~/.vimrc vim个性设置文档
    

    自定义文件头注释~/.vimrc

    autocmd BufNewFile *.py,*.sh,*.c exec ":call SetTitle()"
    
    func SetTitle()
            if &filetype == 'python'
                    call setline(1,"#!/usr/bin/env python")
                    call append(line("."),"#enconding=utf-8")
                    call append(line(".")+1, "#Author: Bai Shuming")
                    call append(line(".")+2, "#Created Time: ".strftime("%Y/%m/%d %H:%M"))
                    call append(line(".")+3, "")
        elseif &filetype == 'sh'
                    call setline(1,"#!/usr/bin/env bash")
                    call append(line("."),"#enconding=utf-8")
                    call append(line(".")+1, "#Author: Bai Shuming")
                    call append(line(".")+2, "#Created Time: ".strftime("%Y/%m/%d %H:%M"))
                    call append(line(".")+3, "")
        elseif &filetype == 'c'
            call setline(1,"#include ")
            call append(line("."), "")
            endif
            
    endfunc
    
  • 相关阅读:
    高精度乘法
    使用BFG清除git仓库中的隐私文件或大文件
    java运行的问题
    eclipse编写的java程序在dos环境下运行的写法
    win32汇编实现阶乘和斐波那契数列
    十个数字不同,实现加减乘。暴力枚举法
    实现一个类模板
    循环队列类模板和函数模板c++实例
    C++析构函数为什么要为虚函数
    1012-Joseph 约瑟夫问题
  • 原文地址:https://www.cnblogs.com/Kwan-C/p/11614492.html
Copyright © 2011-2022 走看看