Linux系统编程Day5 -- Vim工具的使用

发布于:2025-08-07 ⋅ 阅读:(20) ⋅ 点赞:(0)

  往期内容回顾

        Linux常用工具(yum与vim)

       ​​​​​​ Linux系统编程Day4-- Shell与权限

一、Vim工具

1、Linux编辑器-vim介绍

        Vim 是 “Vi IMproved” 的缩写,是 vi 编辑器的升级版,功能更强大,广泛用于 Linux/Unix 中的文本编辑,尤其适合程序员。

2、Vim 的三种工作模式

Vim 有三种主要模式:

模式

描述

普通模式(Normal)

默认进入的模式,可用于浏览、删除、复制、粘贴等操作。

插入模式(Insert)

编辑文本的模式,可像普通编辑器那样输入文字。

命令模式(Command)

用于保存、退出、查找、替换等命令操作。

进入 Vim

vim 文件名

        若文件不存在,Vim 会新建该文件;

  • 若文件存在,则打开文件进行编辑。


3、模式切换操作

操作

功能

Esc

从任何模式返回普通模式

i

进入插入模式,在当前光标前插入

I

在行首插入

a

在光标后插入

A

在行尾插入

:

进入命令模式

4、命令模式的常用操作

        1、光标定位:

        基本移动

操作

命令

说明

向左移动

h

左移一个字符

向右移动

l

右移一个字符

向上移动

k

上移一行

向下移动

j

下移一行


   2、 行内跳转

操作

命令

说明

移动到行首

0

移动到当前行第一个字符

移动到第一个非空白字符

^

行首的第一个非空格字符

移动到行尾

$

当前行最后一个字符


      3、按词跳转  

操作

命令

说明

向前移动一个词

w

移动到下一个词开头

向后移动一个词

b

移动到前一个词开头

移动到词尾

e

当前或下一个词的词尾

         4、按句/段落跳转

操作

命令

说明

下一个句子

)

移动到下一个句子的开头

上一个句子

(

向上移动一个句子

下一段落

}

移动到下一个段落开头

上一段落

{

移动到上一段落开头


        5、文件内跳转

操作

命令

说明

移动到文件开头

gg

第一行

移动到文件末尾

G

最后一行

跳转到第 N 行

:N

例如 :42 跳转到第 42 行

快速上下移动

Ctrl+d / Ctrl+u

向下/向上滚动半屏


        6、文本编辑操作

操作

命令

说明

文本行切换大小写

shift+~

例如:R-> r

替换模式

shift + r =R

批量替换文本;

替换单个符

r

r->替换单个

      7、其他常用操作

操作

命令

说明

进入插入模式

i

在光标前插入

删除一个字符

x

删除光标所在字符

撤销操作

u

撤销上一步

重做操作

Ctrl+r

重做撤销

复制行

yy

复制整行

粘贴

p

在光标后粘贴

删除行

dd

删除整行

注意:光标所在行:

        yy复制(n+yy:支持对光标所在行,进行多行复制)

        p粘贴 (n+p:支持对内容,进行多行粘贴)


5、插入模式:

        命令模式->插入模式:

命令

含义和行为

i

在光标前插入(最常用)

I

在当前行的行首插入(跳过缩进)

a

在光标后插入(append)

A

在当前行的行尾插入

o

在当前行的下方新开一行并插入

O

在当前行的上方新开一行并插入

gi

返回上次插入模式的位置继续插入

若想退出插入模式,按 Esc 回到命令模式


6、底行模式:

        在 Vim 中,底行模式(也叫命令行模式、末行模式)是通过在命令模式下输入 : 进入的。这时你可以输入各种命令,比如保存、退出、查找、替换等。

        1、文件操作

命令

作用

:w

保存当前文件

:w 文件名

另存为指定文件

:q

退出(无更改)

:q!

强制退出(不保存)

:wq 或 :x

保存并退出

:e 文件名

打开一个文件

:n

打开下一个文件(多个文件时)

:prev

打开上一个文件


      2、查找与替换

命令

作用

:/关键词

向下查找

:?关键词

向上查找

:s/原/新/

替换当前行第一个

:s/原/新/g

替换当前行所有匹配项

:%s/原/新/g

替换全文所有匹配项

:%s/原/新/gc

替换全文并逐个确认(c 表示 confirm)


        3、行号和显示

命令

作用

:set number

显示行号

:set nonumber

取消行号显示

:set cursorline

高亮当前行

:set nocursorline

取消高亮当前行


vim模式下分屏操作:vs 文件名

光标的跨屏操作: ctrl + ww;

底行模式下可以执行Linux命令。


二、vim的配置原理

        1. Vim 的启动与配置文件加载过程

Vim 启动时,会按照一定顺序查找配置文件(这些配置文件定义了启动时加载的设置、插件、主题等)vim的配置文件,是一人一份的,一个用户配置的是自己的。主要配置文件有两个:

配置文件

说明

~/.vimrc 或 ~/.config/nvim/init.vim

Vim 启动时读取的主要配置文件

~/.vim/ 目录

Vim 相关插件、脚本等的存储目录

在 Neovim 中,对应的主配置文件是 ~/.config/nvim/init.vim 或 init.lua(如果用 Lua 配置)

        2. Vim 配置文件结构

典型的 .vimrc 文件由以下部分组成:

" 基础设置
set number              " 显示行号
set tabstop=4           " Tab 宽度为 4
set shiftwidth=4        " 自动缩进为 4
set expandtab           " 将 tab 替换为空格
set autoindent          " 自动缩进

" 搜索设置
set ignorecase          " 忽略大小写
set smartcase           " 启用智能大小写

" 主题与界面
syntax on               " 开启语法高亮
colorscheme desert      " 主题设置

" 插件管理(使用插件管理器)
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
call plug#end()

" 自定义快捷键
nnoremap <C-n> :NERDTreeToggle<CR>

" 高亮当前行
set cursorline

" 让光标跳到文件上次退出的位置
if has("autocmd")
  autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

" 启用鼠标
set mouse=a

" 设置颜色主题(需要安装主题)
colorscheme desert

        3、如何配置自己的vimrc

         示例 .vimrc 配置文件

set nocompatible
filetype off
syntax on
set number
set tabstop=4 shiftwidth=4 expandtab
set autoindent smartindent
set cursorline
set mouse=a
set encoding=utf-8
set fileencodings=utf-8,gbk
set ignorecase smartcase
set incsearch hlsearch

" 状态栏
set ruler
set laststatus=2
set showcmd

" leader 键映射
let mapleader=" "
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader><space> :nohlsearch<CR>

" 插件管理
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'vim-airline/vim-airline'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'preservim/nerdcommenter'
call plug#end()
  • 新手推荐的插件:

    • nerdtree(文件管理)

    • vim-airline(美化状态栏)

    • coc.nvim(智能补全,强大但较重)

    • nerdcommenter(快捷注释)

  • 每次修改 .vimrc 后可通过以下命令重新加载:

:source ~/.vimrc

三、为什么要使用 Vim 写 C/C++ 代码

 1、极致的高效编辑体验

        1. 纯键盘操作,无需鼠标

  • 所有操作(移动、复制、粘贴、删除、查找等)都可以通过快捷键完成,极大提升效率。

        2. 强大的文本编辑能力

  • Vim 的 多光标、宏录制、块编辑 等特性让你对文本进行批量、结构化的操作变得非常方便。

        3. 无限撤销、重做,历史记录可追踪

  • Vim 允许你非常自由地控制编辑历史,尤其在调试代码或尝试性修改时非常有帮助。


2、与构建工具、调试器无缝集成

        支持命令行编译系统:

make、cmake、gcc、clang++ 可直接从 Vim 中调用:

:!g++ main.cpp -o main && ./main

与调试器集成:

  • 使用插件如 vimspector 或 termdebug,你可以在 Vim 中调试 C/C++ 程序:

    • 设置断点,单步执行,查看变量。


 3、启动和运行速度极快

  • 启动几乎为“秒开”,相比一些重量级 IDE 如 VS、Eclipse、CLion,要轻快得多。

  • 不会卡顿、不需要等待索引重新生成。

  • 学会 Vim,对你理解代码结构、训练编程逻辑非常有帮助。


 4、完整的终端工作流

  • Vim 可以和 shell 命令完美结合,像 grep, sed, awk, gdb, git, make 这些工具都可以直接在 Vim 内集成。

  • 支持 多窗口拆分、终端内运行调试器、项目构建系统等,形成一个完整的“内功”开发环境。


5、Vim 适合这类 C/C++ 程序员

类型

原因

系统级/嵌入式开发者

可以在服务器终端直接编码编译

追求高效键盘操作

熟练后效率远超鼠标为主的 IDE

喜欢自由定制工具

Vim 几乎可以定制一切

需要轻量快速的开发环境

启动快,占资源小

喜欢 Unix 哲学

Vim 与 Linux 工具链高度契合


网站公告

今日签到

点亮在社区的每一天
去签到