VIM的使用方法

本文详细介绍Vim编辑器的基本概念、使用技巧及其强大的文本编辑功能。包括多种工作模式、快捷键、文件恢复机制等内容。
导读 Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
一、vi、vim介绍

(1)基于图形界面,如gedit、geany等;
(2)基于命令行,如nano、vi、joe等;

每个命令行界面的文本编辑器都有各自不同的快捷键,比如nano的保存为CTRL+W,vim的保存为:w;
基于命令行的文本编辑器是必要的,Linux的tty1~tty6都是命令行界面,是打不开图形界面的文本编辑器的;
vi是每个Linux Distribution都默认安装的文本编辑器,并且很多软件的默认编辑器都是vi,因此学习vi是很必要的;
vim是vi的高级版本,vi是文本编辑器,而vim应该说是程序编辑器,因为能够像一般的IDE一样,根据文件名载入不同的语法高亮,即颜色区分,比如java文件会遵循java的语法高亮;

下面我们就编写一个"hello world"的java程序来看看vim的语法高亮;
vim1
可以看出vim有很好的语法检查功能,因为关键字都使用了不同的颜色标出;
vi有三种模式:

(1)一般模式:进入vi的默认模式,能够进行复制、黏贴、删除等操作;
(2)编辑模式:从一般模式按下‘i’即可进入;
(3)命令行模式:从一般模式按下“:”、'?'、'/'即可进入;

注意:如果安装了vim后,输入vi后也是使用vim编辑器,我们输入alias后看到“alias vi='vim'”;

二、vi/vim按键
“一般模式”的常用按键:
“一般模式”的常用按键按键含义
h向左
J向下
K向上
l向右
20h向左20个字符
20j向下20行
20k向上20行
20l向右20个字符
Page Up向上翻页
Page Down向下翻页
Home光标移到当前行的最左端
End光标移到当前航的最右端
n [空格]光标向右移动n个字符
N[Enter]光标向下N行
G光标移到最后一行
nG光标移动到第n行
gg或1G光标移动到第一行
/word向下查找word
?word向上查找word
n如果是/word后使用,则表示向下继续查找;
如果是?word后使用,则表示向上继续查找;
N如果是/word后使用,则表示向上继续查找;
如果是?word后使用,则表示向下继续查找;
:n,m/old/new/g从第n行到第m行中,将old替换为new
:n,$s/old/new/g从第n行到最后一行中,将old替换为new
u类似windows中的CTRL+Z,前一步
x向后删除一个字符
X向前删除一个字符
3x向后删除3个字符
3X向前删除3个字符
dd删除当前行
3dd删除当前行开始的3行
yy复制当前行
3yy复制当前行开始的3行
p黏贴到当前光标的下一行
P黏贴到当前光标的上一行
CTRL+r重做前一个操作
“命令行模式”的常用按键:
“命令行模式”的常用按键按键含义
:w保存
:q退出vim
:wq保存并退出
:wq!(在可以转换权限的情况下)强制保存并退出
:q!直接退出不保存
:w filename另存为filename
:n,m w filename将第n行到第m行另存为filename
:set nu显示行号
:set nonu不显示行号
:! command暂时离开vim,并执行command,执行完后再进入vim
:r filename将filename文件的数据读入当前文件
:set all显示当前vim的环境配置
三、vim的恢复机制

vim正在编辑某个文件时都会同时存在.file.swp,此文件用来暂存,帮助恢复文件内容,当vim正常关闭此文件时,.filename.swp文件会消失。
vim2
我们看到图中说明了出现此界面的两个原因:

(1)多人同时编辑此文件:因为Linux是多用户的操作系统,因此可能两个人同时登陆并编辑此文件,如果A进入系统开始编辑1.txt文件,则会出现.1.txt.swp,当A还没编辑完但B也想进去编辑时,因为此文件的目录中存在.1.txt.swp,则就会出现上图的界面;
(2)非正常关闭文件;

图中最后一行说明了我们此时可以采取的几个动作:

(1)o:以只读方式打开;
(2)R:恢复,即从swp文件中恢复,但是swp文件不会随着vim关闭而删除,需要手动删除;
(3)d:删除swp文件;
(4)q:退出vim;
四、vim记录及默认配置文件

/etc/vimrc文件为全局vim配置文件。

1.如果我们用xiazdong账户使用vim后,在/home/xiazdong就会出现.viminfo文件,此文件用来作为vim的日志,记录用户使用vim打开了什么文件,做了什么操作;
2.如果xiazdong账户想要配置vim的默认环境,则可以在/home/xiazdong创建.vimrc,并且配置一些特征,比如显示行号,语法检查等;

一般使用如下配置:

set hlsearch
set backspace=2
set autoindent
set nu
set ruler
set showmode
set bg=dark
syntax on
五、Visual Block功能

Visual Block功能可以用于块复制。

(1)CTRL+v:开始复制块;
(3)y:复制块;
(4)p:黏贴块;
(5)d:删除块

vim3

六、同时编辑多个文件

多文件编辑的好处是能够将一个文件的某些内容yy后,p到另一个文件中。
vim file1 file2 即可同时编辑两个文件,但是屏幕中同时只会出现一个文件内容,需要进行切换。

(1):n:向下切换;
(2):N:向上切换;
(3):files:列出当前编辑的所有文件;
七、多窗口编辑

如下图:一个界面能够显示多个文件内容。
vim4

(1):sp:打开当前文件;
(2):sp filename:打开filename文件;
(3)CTRL+w+↓:光标切换到下一个窗口;
(4)CTRL+w+↑:光标切换到上一个窗口;
(5):q:关闭光标所在的窗口;
八、编码问题

可能会出现乱码问题,解决方法:保持终端的字符编码与文件的字符编码一致!tty1~tty6不支持显示中文,因此在tty1~tty6中显示中文必出现乱码,设置终端的字符编码。
vim5

编码转换命令:iconv
iconv -f文件的原本编码-t文件的新编码filename -o newfilename
比如有一个big5编码的文件:1.big5,要转换成utf8的文件:2.utf8,则iconv -f big5 -t utf8 1.big5 -o 2.utf8
本文转载自: http://www.linuxprobe.com/how-using-vim
免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好: http://www.linuxprobe.com/
<think>嗯,用户之前问过关于Windows和Linux下中文乱码的问题,现在转向了Ubuntu下的Vim使用方法。根据提供的引用内容,用户可能已经看过一些关于Vim的基础命令、镜像源更换以及安装教程,但需要更系统化的教程。需要确认用户的需求是全面的Vim使用指南,包括基本操作、模式切换、常用命令、配置优化等。 首先,用户提供的引用1和2提到了Vim的基础命令、三种模式以及如何更换镜像源,引用3涉及安装Vim。但用户当前的问题是关于使用方法的,所以重点放在引用2的内容。需要整理Vim的启动、模式切换、基本编辑、查找替换、保存退出等操作,并结合实际例子,让用户更容易理解。 另外,用户可能希望了解进阶配置,比如如何设置行号、代码高亮、插件管理等。可能还需要提到如何通过.vimrc文件进行个性化设置,以及推荐的插件,如NERDTree、YouCompleteMe等,这些在引用中没有提到,但属于常见需求。 还需要注意用户可能是在Ubuntu环境下,所以安装Vim的命令需要明确,比如使用apt-get安装。同时,可能遇到权限问题,需要提醒用户使用sudo。此外,跨平台使用中的中文编码问题,可以联系之前的回答,建议设置UTF-8编码,避免乱码。 用户可能对Vim的学习曲线感到困难,所以应强调练习的重要性,提供练习建议,比如Vim自带的教程vimtutor。最后,生成的相关问题需要考虑用户可能的后续需求,如配置管理、插件安装、性能优化等,帮助用户深入学习。</think>#### Ubuntu系统Vim使用完整教程 --- ### 一、Vim核心模式与操作逻辑 Vim采用**模态编辑**设计,包含三种基础模式: 1. **命令模式(Normal Mode)** - 启动时的默认模式(按$Esc$返回) - 支持光标移动、复制粘贴等操作 - 示例命令: ```vim dd " 删除当前行 5j " 向下移动5行 yy " 复制当前行 ``` 2. **输入模式(Insert Mode)** - 通过以下命令激活: ```vim i " 光标前插入 a " 光标后插入 o " 下方新行插入 ``` 3. **底线命令模式(Command-line Mode)** - 输入$:$进入,支持文件操作与配置 - 常用指令: ```vim :w " 保存文件 :q! " 强制退出不保存 :set nu " 显示行号 ``` --- ### 二、核心操作速查表 #### 1. 文件基础操作 ```bash vim filename # 打开/创建文件[^2] vim +10 filename # 打开文件并定位到第10行 ``` #### 2. 高效导航技巧 | 命令 | 功能 | |------------|--------------------------| | `gg` | 跳转文件首行 | | `G` | 跳转文件末行 | | `50G` | 跳转第50行 | | `Ctrl+f` | 向下翻页 | | `/pattern` | 正向搜索内容(按n/N跳转)| #### 3. 文本编辑进阶 ```vim dw " 删除单词 ci" " 修改双引号内内容 u " 撤销操作 Ctrl+r " 重做操作 :%s/old/new/g " 全局替换文本 ``` --- ### 三、开发环境配置优化 #### 1. 创建配置文件 ```bash vim ~/.vimrc " 新建个性化配置文件 ``` #### 2. 推荐基础配置 ```vim set number " 显示行号 set tabstop=4 " 制表符宽度 syntax on " 启用语法高亮 set encoding=utf-8 " 设置文件编码[^1] ``` #### 3. 插件管理示例(Vim-plug) ```vim " 安装插件管理器 curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim " 配置插件 call plug#begin('~/.vim/plugged') Plug 'preservim/nerdtree' " 文件树插件 Plug 'ycm-core/YouCompleteMe' " 代码补全 call plug#end() ``` --- ### 四、实战案例演示 #### 1. 多文件编辑 ```vim :split file2.c " 水平分割窗口 :vsplit header.h " 垂直分割窗口 Ctrl+w+h/j/k/l " 窗口间切换 ``` #### 2. 批量修改操作 ```vim :1,10s/printf/cout/g " 替换1-10行的printf为cout :'<,'>s/old/new/g " 在可视化选中区域执行替换 ``` --- ### 五、学习路径建议 1. **内置教程**:终端执行`vimtutor`(约30分钟交互式教程) 2. **图形速查**:桌面保存Vim快捷键示意图 3. **渐进训练**:从基础操作到`宏录制`、`正则表达式`分阶段掌握 --- #### 相关问题 1. 如何配置Vim支持Python代码自动补全? 2. Vim如何进行多标签页管理? 3. 如何通过Vim直接执行终端命令? [^1]: 编码设置可参考系统环境配置 [^2]: 基础命令操作详见Vim官方文档
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值