linux系统的编辑器vim(不断更新)

本文详细介绍了vi和vim编辑器的工作模式,包括命令行模式、插入模式和编辑模式,并列举了一系列实用命令,如显示/取消行号、退出编辑器、定位、删除、复制、替换和搜索替换等。此外,还讲解了vim的快捷键、历史命令记录、高亮搜索、语法高亮以及vimgrep搜索。同时,提到了vim配置文件.vimrc的使用和自定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里我们来讨论一下vi和vim编辑器的一些简单操作,vi和vim编辑器可以实现对文件的创建、修改、编辑等基本操作,如果系统的多个用户同时打开编辑同一个文本,以最后一个用户保存为主。
vi和vim的工作模式:是一个文本编辑器(类似windows系统下的记事本);

在vi编辑器下有三种模式:

1、命令行模式
2、插入模式
3、编辑模式
三者之间的关系如下图:
这里写图片描述
命令模式:所在键盘上打字都可能是命令;

下面我们来看看vi下面的一些命令:

    i:在当前位置前插入;
    I:在光标所在行开始位置插入;
    a:在光标当前位置后面插入;
    A:在光标所在行末插入;
    o:在光标坐在行和下一行之间插入新的行;
    O:在光标所在行和上一行之间插入新的行;

如果你想在vi编辑页面显示出行号或者取消行号,可以在编辑模式下输入:

set nu//显示行号
set nonu//取消显示行号

退出出vi编辑器:

    1、从命令行模式下:键入ZZ
    2、从编辑模式下:q退出、wq写入并退出、wq!强制写入并推出、q!强制退出、w file_name 另存为 也可以是另外路径的文档、x保存退出、x!强制保存退出;

命令行模式定位:

   h:左移一个字符;
   j: 下移一个字符;
   k:上移一个字符;
   l:右移一个字符; 
   $:直接移至行尾;
   0:移至行首;
   Enter:移至下行行首;
   H:移至屏幕上端(不是文本)
   M:移至屏幕中间;
   L:移至屏幕下端;
   G:移至到文本最后一行;
   nG:移至文本第n行

命令行模式删除命令:

    x:删除光标所在出的字符,按一次删除一个字符,向后删除;
    X:和x相反;
    dd:删除光标所在的行;
    dG:删除光标所在行和光标所在行以下所有行;
    D: 删除光标所在位置到本行行末;

删除n1~n2行:在编辑模式下输入:

n1,n2d//Enter

命令行模式下的复制命令:

    yy,Y//复制当前行;
    nyy,nY//复制当前行以下几行;
    p//将以选择复制或者已经被删除的行放在当前行下,类似粘贴和剪切;
    "+y  复制选中内容到+寄存器,也就是系统的剪贴板,供其他程序用

复制vim文件中所有内容:

         按esc后,然后ggyG //仅可以在当前文件中粘贴
        全选高亮显示:按esc后,然后ggvG或者ggVG

        要复制到别的地方,用 "+y 来复制,注意是三个字符。gg"+yG                   

命令行模式下替换和取消命令:

    r:取代光标当前位置的字符;
    R:从光标所在位置开始替换字符,按Esc停止替换;
    s:替换光标所在处字符,并进入文本输入模式;
    S:替换光标所在全行,按Esc结束;
    u:取消上一步的操作(可以取消到文件打开的时候)
    U:取消当前行之前的所有操作

搜索和替换:

    命令行搜索字符串:
            /string
            ?string
            n向下搜索(/)  ?
            N向上搜索(?)   ?
    编辑模式下下替换:
            %s/old/new/g  //将旧的换成新的,没有空格
            %s/old/g  //将搜索到内容删除,没有空格

将文件读入到当前位置(编辑模式):“r+文件名”
查看ip本机地址,在编辑模式下:“!ifconfig”
也可以在编辑模式下进行执行关机等系统操作:
!+操作系统命令:

clearshutdown -h now/10
                !reboot
                !pwd
            ...

也可以打开多个文件(命令行模式):

    vi -o file1 file2 //水平查看        
    vi -O file1 file2 //垂直查看
    ctrl+ww //可以在两个文件之间切换

vi的配置文件在每个用户的家目录下,隐藏文件: .vimrc(默认是不存在的)
配置vi编辑器:
1、可以在家目录下建立.vimrc把准备好的vimrc的内容复制过去
2、也可以在/etc目录下,找到vimrc文件,把准备好的vimrc文件替换。

vim编程中使用到的快捷键:

g + ] 可以查看当前函数的所有位置的定义

[[跳到函数头部,]]跳到函数尾部

自动补全:ctrl + n或者ctrl + p
如果无法匹配就先去配置ctags

vim的历史命令记录和查看:

1、在vim打开文件的时候,在命令行模式下按q会开始记录操作命令
2、先按esc接着按q后按: //可以查看历史操作,同vim插入操作按键,进入历史命令记录文件编辑状态,增加命令或者删除操作过的命令
3、同2按q和/搭配,同样查看vim历史操作命令
4、按下ctrl+c会退出查看但不会退出vim

高亮搜索匹配:

shift + * 在当前文件中向后搜索光标所在单词,并高亮显示
shift + # 在当前文档中向前搜索光标所在单词,并高亮显示
二者到了文件尾部或者头部都会循环进行搜索显示

搜索字符串后,按n和N会分别向后或向前匹配字符串
:set hlsearch 高亮所有匹配的字符串
:nohlsearch 临时关闭
:set nohlsearch 彻底关闭,只有重新:set hlsearch才可以高亮搜索

查找文件中所有该单词,就将光标移动到该单词所在地方,按下gd会高亮显示该文件中所有该单词

语法高亮

(如果没有配置vim配置文件vimrc时使用,配置过不需要重新设置)
syntax on

syntax off

vim grep /匹配模式/[g][j] 要搜索的文件/范围:

g: 表示是否把每一行的多个匹配结果都加入

j: 表示是否搜索完后定位到第一个匹配的位置

vimgrep /pattern/% 在当前打开文件中查找

vimgrep /pattern/ * 在当前目录下查找所有

vimgrep /pattern/ ** 在当前目录及其子目录下查找所有

vimgrep /pattern/ *.c 查找当前目录下所有的.c文件

vimgrep /pattern/ */ 只查找子目录

cn 查找下一个

cp 查找上一个

copen 打开quickfix

cw 打开quickfix

cclose 关闭quickfix

help vimgrep 查看vimgrep帮助

通过:vimgrep /pattern/gj path来查找字符串,最好将右边的文件列表显示栏关闭,这样quickfix窗口显示比较方便查看。

vim颜色配置方案:

highlight 可以查看具体的颜色配置

highlight LineNr term=underline,bold ctermfg=3 guifg=Brown

Set colorcolumn=80 设置边界线为80列

Set colorcolumn=0 取消边界线设置

Highlight colorcolumn ctermbg=4 guibg=Blue

:help cterm-colors可以查看颜色对应的值

vim配置文件内容:

1、直接修改/etc目录下的vimrc(redhat)文件(ubuntu/etc/vim/vimrc),所有用户的vim都配置了
2、只修改当前用户的vim配置文件,在家目录下修改.vimrc文件即可:

            #:cd 
            #:vi .vimrc

修改了配置文件vimrc并保存后,如果希望不重启vim而让配置立即生效,可以在打开的vim中执行:source path/vimrc

"=========================================================================
"" DesCRiption: 适合自己使用的vimrc文件,for Linux/Windows, GUI/Console
"
"" Last Change: 201008021513"
"" Version:     1.80
"
""=========================================================================
set tags=/root/linux-3.17.2/tags
set nocompatible            " 关闭 vi 兼容模式
syntax on                   " 自动语法高亮
set number                  " 显示行号
set autoindent              " 自动对齐
set smartindent             " 智能对齐
set cursorline              " 突出显示当前行
set ruler                   " 打开状态栏标尺
set ts=1                    " 设定 tab 长度为 4
"set tabstop=1               " 设定 tab 长度为 4
set expandtab               " use space instead of tab
set shiftwidth=0            " 设定 > 命令移动时的宽度为 4
set softtabstop=1           " 使得按退格键时可以一次删掉 4 个空格
set nobackup                " 覆盖文件时不备份
set autochdir               " 自动切换当前目录为当前文件所在的目录
filetype plugin indent on   " 开启插件
set backupcopy=yes          " 设置备份时的行为为覆盖
set ignorecase smartcase    " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set nowrapscan              " 禁止在搜索到文件两端时重新搜索
set incsearch               " 输入搜索内容时就显示搜索结果
set hlsearch                " 搜索时高亮显示被找到的文本
set noerrorbells            " 关闭错误信息响铃
set novisualbell            " 关闭使用可视响铃代替呼叫
set t_vb=                   " 置空错误铃声的终端代码
" set showmatch               " 插入括号时,短暂地跳转到匹配的对应括号
" " set matchtime=2             " 短暂跳转到匹配括号的时间
" set magic                   " 设置魔术
" set hidden                  " 允许在有未保存的修改时切换缓冲区,此时的修改由
" vim 负责保存
" set guioptions-=T           " 隐藏工具栏
" set guioptions-=m           " 隐藏菜单栏
" set smartindent             " 开启新行时使用智能自动缩进
set backspace=indent,eol,start
"                             " 不设定在插入状态无法用退格键和 Delete
"                             键删除回车符
"                             set cmdheight=1             " 设定命令行的行数为
"                             1
"                             set laststatus=2            " 显示状态栏
"                             (默认值为 1, 无法显示状态栏)
"                             set statusline=\ % @=((foldclosed(line('.'))
"                                                         " 用空格键来开关折叠
"                                                         " return OS type,
"                                                         eg: windows, or
"                                                         linux, mac, et.st..
"                                                         function! MySys()
"                                                             if has("win16")
"                                                             || has("win32")
"                                                             || has("win64")
"                                                             || has("win95")
"                                                                     return
"                                                                     "windows"
"                                                                         elseif
"                                                                         has("unix")
"                                                                                 return
"                                                                                 "linux"
"                                                                                     endif
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
set nonu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值