Vim编辑文件

打开

Vim打开方式 说明
vim   文件路径 Vim打开指定路径的文件
(光标位于文件头或上次退出处)
vim   +数字N   文件路径 Vim打开指定路径的文件
(光标位于第N行)
vim   +/关键词   文件路径 Vim打开指定路径的文件
(同时以高亮显示关键词,光标同第一种方式)
vim   文件路径1   文件路径2 同时打开多个指定路径的文件
(光标同第一种方式)

退出

Vim退出必须通过末行模式,且退出分为以下5种:

退出方式 含义
q 退出
(若已修改文件,则会退出失败)
q! 强制退出
(强制退出已修改文件,且不保存)
wq 保存并退出
x 保存并退出
  • wq/q和x退出的区别如下(建议适用x):
文件是否修改 wq/q退出 x退出
更新文件的修改时间 更新文件的修改时间
更新文件的修改时间 不更新修改时间

Vim模式

 

模式 说明
命令模式
(默认模式)
通过快捷键游览和修改文件
末行模式
(尾行模式)
通过特定命令操作文件
编辑模式
(输入模式)
通过键盘进行文本式修改文件

命令模式

命令模式:通过快捷键游览和修改文件

  • 常用快捷有以下3种:

1、 移动光标(游览文件):;

快捷键 说明
h
(←)
光标向左移动一个字符单位
j
(↓)
光标向下移动一个字符单位
k
(↑)
光标向上移动一个字符单位
l
(→)
光标向右移动一个字符单位
shift和6 光标移到当前所在行的行首
shift和4 光标移到当前所在行的行尾
gg 光标移到首行
G 光标移到末行
N和G 光标移到第N行
N和j或k 以当前光标所在行为基准移动N行
  • 也可通过Ctrl和B(向上翻页)和Ctrl和F(向下翻页)游览文件

1、 修改文件:;

快捷键 说明
x 删除当前光标所在的字符
dd 删除光标所在行
N和dd 以当前光标所在行为基准,向下删除N行
yy 复制光标所在行
N和yy 以当前光标所在行为基准,向下复制N行
p 以当前光标所在行为基础,向上黏贴
P 以当前光标所在行为基础,向下黏贴
  • 可视化删除/复制Ctrl和V:通过移动光标选择需操作字符

1、 撤销和恢复:;

快捷键 说明
U 撤销快捷键操作
(只能撤销该次打开文件进行的操作)
Ctrl和R 恢复撤销
. 重复上次操作

末行模式

末行模式:通过特定命令操作文件

  • 常用命令有以下5种:

1、 退出/保存文件:;

退出方式 含义
q 退出
(若已修改文件,则会退出失败)
q! 强制退出
(强制退出已修改文件,且不保存)
wq 保存并退出
x 保存并退出

1、 调用外部命令:在不退出Vim的同时执行命令;

  • 使用格式:!命令
  • 回车后会切换到终端显示运行结果,可再次回车返回打开的文件

列1:Vim打开/etc/passwd文件的同时输出当前时间
(1)末行模式下输入“!date”
 
(2)运行结果
 

1、 检索关键词(正则表达式):输入关键词并回车,以高亮显示每个关键词;

  • 使用格式:/关键词
  • 可通过N(上一个)和n(下一个)查看关键词
  • 若关键词包含"/",应使用\转移字符表示其为普通字符
  • 取消高亮,可输入命令:nohl

列1:Vim打开/etc/passwd文件的并检索包含关键词“/sbin/nologin”
(1)末行模式下输入“/\/sbin\/nologin”
 
(2)运行结果
 

1、 替换:匹配指定内容并替换,有以下4种格式:;

  • 格式1(仅替换光标往后第一处匹配成功内容):s/匹配内容/替换内容
  • 格式2(替换光标所在行所有匹配成功内容):s/匹配内容/替换内容/g
  • 格式3(仅替换文件中每行第一处匹配成功内容):%s/匹配内容/替换内容
  • 格式4(替换文件中所有匹配成功内容):%s/匹配内容/替换内容/g

1、 同时显示多个文件:再打开文件并和已打开的文件同时显示;

  • 使用格式:sp 文件路径
  • 切换光标所在文件快捷键:Ctrl和W 和 上下方向键

例1:在两个窗口下同时查看/etc/passwd文件
 

编辑模式

编辑模式:通过键盘进行文本式修改文件

  • 常用进入方式有以下7种:
     

Vim实用功能

异常退出

异常退出:Vim打开文件后不通过标准命令形式退出文件,当下次打开时会弹出异常退出报错

  • Vim打开文件时会默认创建同名的临时交换文件,但后缀为swap
  • 删除该临时文件即可解决异常退出(正常退出时,默认自动删除该临时交换文件)
  • 也可在打开临时文件时按“R”保存退出时未保存的内容以解决异常退出(仍需手动删除临时交换文件)

例1:打开异常退出的文件
 

按键 含义
O
(Open Ready Only)
以只读模式打开该文件
E
(Edit anyway)
默认模式打开该文件,但不加载临时交换文件
R
(Recover)
正常打开该文件,并加载临时交换文件
D
(Delete it)
打开该文件,并在打开前删除临时交换文件
Q
(Quit)
退出
A
(Abort)
忽略编辑操作,并退出

配置Vim

配置Vim:Vim配置文件分为临时配置、个人配置、全局配置

1、 临时配置:在末行模式下运行的各种配置命令(关闭即失效);
2、 个人配置:各个用户Vim独立的Vim配置文件~/.virmc
3、 全局配置:所有用户的默认Vim配置文件/etc/vimrc
4、 优先级:临时配置>个人配置>全局配置;
5、 常用配置命令:;

命令 含义
set nu 显示行号
set nonu 关闭行号
(默认配置)
syntax on 语法高亮
syntax off 关闭语法高亮
(默认配置)
set backup 自动保存备份文件
set nobackup 取消自动备份文件
(默认配置)

博主配置文件

"""关闭兼容Vi"""
set nocompatible
"""ESC反应时间为100ms"""
set ttimeout
set ttimeoutlen=100

"""开启新行时,自动缩进"""
set smartindent
"""输入搜索内容时就显示搜索结果"""
set incsearch

"""右下角状态栏"""
set ruler
"""显示当前所在模式"""
set showmode
"""背景色为黑色"""
set background=dark
"""颜色主题为黑色"""
colorscheme slate

"""显示行号"""
set nu
"""语法高亮"""
syntax on

"""F5编译程序"""
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
    exec "w"
    if &filetype == 'c'
        exec "!g++ % -o %<"
        exec "!time ./%<"
    elseif &filetype == 'cpp'
        exec "!g++ % -o %<"
        exec "!time ./%<"
    elseif &filetype == 'java'
        exec "!javac %"
        exec "!time java %<"
    elseif &filetype =='python'
       exec "!time python3 %"
    elseif &filetype == 'go'
        exec "!go build %<"
        exec "!time go run %"
    elseif &filetype == 'sh'
        :!time bash %
    elseif &filetype == 'html'
        exec "!firefox % &"
    endif
endfunc