美文网首页
Vim 入门

Vim 入门

作者: seawen18 | 来源:发表于2024-03-10 12:53 被阅读0次

认识 VIM

刚开始用 VIM 打开文件的时候,需要从宏观的去了解一下 VIM 这个编辑器。

VIM 常用的有四个模式,:

  • 正常模式 (Normal-mode)
  • 插入模式 (Insert-mode)
  • 命令模式 (Command-mode)
  • 可视模式 (Visual-mode)
正常模式(Normal-mode)

正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。这时击键时,一些组合键就是 vim 的功能键,而不会在文本中键入对应的字符。

在这个模式下,我们可以通过键盘在文本中快速移动光标,光标范围从小到大是字符、单词、行、句子、段落和屏幕。启动 VIM 后默认位于正常模式。不论是什么模式,按一下 <Esc> 键 ( 有时可能需要按两下,插入模式按一下 Esc ,就会切换到正常模式,命令模式或者可视模式下执行完操作以后,就会自动进入正常模式,如果进入命令模式或者可视模式没有执行任何操作,按两下 Esc 即可 )都会进入正常模式。

下面的三个模式都是过键盘上相应的键位去触发的。

插入模式?(Insert-mode)

在正常模式中按下个别字母键(后面会详细介绍),会进入插入模式。

例如按 i 键会进行插入模式。该模式启动以后,就会进入编辑状态,通过键盘输入内容。

命令模式(Command-mode)

在正常模式中,按下:(冒号)键或者/ (斜杠),会进入命令模式。在命令模式中可以执行一些输入并执行一些 VIM 或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。

可视模式(Visual-mode)

在正常模式按下v, V, <Ctrl>+v,可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

如何从正常模式进入插入模式呢?

请记住下面几个常用启动录入文本的键盘字符 i,I,a,A,o,O,s,S 。

i是在光标所在的字符之前插入需要录入的文本。

I 是在光标所在行的行首插入需要录入的文本。

a 是在光标所在的字符之后插入需要录入的文本。

A 是在光标所在行的行尾插入需要录入的文本。

o 是光标所在行的下一行行首插入需要录入的文本。

O 是光标所在行的上一行行首插入需要录入的文本。

s 删除光标所在处的字符然后插入需要录入的文本。

S 删除光标所在行,在当前行的行首开始插入需要录入的文本。

还有一个可能经常用到的就是 cw ,删除从光标处开始到该单词结束的所有字符,然后插入需要录入的文本(这个命令是两个字符的合体 cw )。

VIM 的命令模式

关于命令模式上文有提到过,下面主要来列举几个常用的命令模式操作(命令输入完以后,需要按下 Enter 键去执行命令):

文本的行号设置最好不要设置在配置文件中(因为复制文件的时候行号的出现会很麻烦),在命令行实现就好。

:set number             " 显示行号
:set nonumber           " 关闭行号

:set tabstop=4          " 设置 tab space 为4个空格
:set ts=4               " 同 tabstop
:set expandtab          " 将tab替换为指定数量的空格
:set autoindent         " 设置为自动缩进

:set background=dark        " 设置背景颜色

:set guifont=consolas:h14       " 设置字体为 consolas,字号为14

:set history=700        " 设置保存命令的行数

:set autoread       " 设置当文件变化时,自动读取新文件

:set wrap       " 启动折行
:set nowrap     " 禁止折行

" 切换文件格式,ff是 fileformat 的缩写
:set ff=unix            " 将文件切换为 unix 格式,每行以 "\n" 结尾 
:set ff=dos             " 切换为 Windows 格式,每行以 "\r\n" 结尾

" 设置编码格式
:set encoding=utf-8         " 设置 vim 展示文本时的编码格式
:set fileencoding=utf-8     " 设置 vim 写入文件时的编码格式

:set filetype=html          " 设定文件类型,方便语法高亮

:set hlsearch               " 高亮显示搜索结果

:set paste                  " 设置为 paste 模式,在粘贴前设置该模式,可以避免各种 auto-formating
:set nopaste                " 切换回 normal 模式

VIM 删除多行文本

:n1,n2d

n1 和 n2 指的是起始行号和结束行号,d 是删除关键字

VIM 处理文本的替换

:{作用范围}s/{目标}/{替换}/{替换的标志}

作用范围分为当前行、全文、选区等等。

:s/zempty/handsome/g

将会把当前光标所在行的 zempty 替换成 handsome

:%s/zempty/handsome/g

将会把全文中的 zempty 替换成 handsome

:n1,n2s/zempty/handsome/g

这里的 n1 和 n2 值得是行号,将会替换掉 n1 到 n2 的所有 zempty 为 handsome.

选区,在可视模式下选择区域后输入 : ,VIM 会自动补全为 :'<,'>。

:'<,'>s/zempty/handsome/g

这个操作咋一看起来有点懵逼,这个操作是可视模式 (Visual-mode) 下选区中的替换操作(可视模式下文会谈到),可视模式下输入:会自动补全 :'<,'> 这个是可视范围下的操作范围,类似于 % 和 n1,n2,代表操作的文本范围,上面的例子就是替换掉可视区域的 zempty 为 handsome。

下面来谈谈替换的标志。

上文中命令结尾的 g 即是替换标志之一,表示全局 global 替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现

:s/zempty/handsome

作用于当前行,从光标处开始查找替换,仅仅替换第一次匹配 zempty 的地方为handsome 。

:%s/zempty/handsome

替换掉文件中所有行第一次出现 zempty 的地方为 handsome 。

i 表示大小写不敏感查找,I 表示大小写敏感:

:%s/zempty/handsome/i

替换掉所有行第一个出现 zempty (不区分大小写) 为 handsome 。

:%s/zempty/handsome/gi

替换掉所有行出现 zempty (不区分大小写) 为 handsome 。

c 表示需要确认,例如全局查找"zempty"替换为"handsome"并且需要确认:

:%s/zempty/handsome/gc

VIM 的正常模式(Normal-model)

VIM 正常模式下,主要进行的操作有光标的移动,复制文本,删除文本,黏贴文本等。

快速移动光标

几个重要的快捷键

请记住这几个快捷键 h,j,k,l 这几个按键主要是用来快速移动光标的,h 是向左移动光标,l 是向右移动光标,j 是向下移动光标,k 是向上移动光标,h , j , k ,l 在主键盘区完全可以取代键盘上的 ↑ ,↓ ,← , → 的功能。

在当前行上移动光标

0 移动到行头

^ 移动到本行的第一个不是 blank 字符

$ 移动到行尾

g_ 移动到本行最后一个不是 blank 字符的位置

w 光标移动到下一个单词的开头

e 光标移动到下一个单词的结尾

fa 移动到本行下一个为 a 的字符处,fb 移动到下一个为 b 的字符处

nfa 移动到本行光标处开始的第 n 个 字符为 a 的地方(n 是 1,2,3,4 ... 数字)

Fa 同 fa 一样,光标移动方向同 fa 相反

nFa 同 nfa 类似,光标移动方向同 nfa相反

ta 移动光标至 a 字符的前一个字符

nta 移动到第二个 a 字符的前一个字符处

Ta 同 ta 移动光标方向相反

nTa 同 nta 移动光标方向相反

; 和, 当使用 f, F, t ,T, 关键字指定字符跳转的时候,使用 ;可以快速跳转到下一个指定的字符,, 是跳到前一个指定的字符

跨行移动光标

nG 光标定位到第 n 行的行首

gg 光标定位到第一行的行首

G 光标定位到最后一行的行首

H 光标定位到当前屏幕的第一行行首

M 光标移动到当前屏幕的中间

L 光标移动到当前屏幕的尾部

zt 把当前行移动到当前屏幕的最上方,也就是第一行

zz 把当前行移动到当前屏幕的中间

zb 把当前行移动到当前屏幕的尾部

% 匹配括号移动,包括 ( , { , [ 需要把光标先移动到括号上

  • 和 # 匹配光标当前所在的单词,移动光标到下一个(或者上一个)匹配的单词( * 是下一个,# 是上一个)
翻页操作

ctrl+f 查看下一页内容

ctrl+b 查看上一页内容

VIM 的复制,黏贴 ,删除

三个重要的快捷键 d , y , p

d 是删除的意思,通常搭配一个字符 ( 删除范围 ) 实现删除功能,常用的如下:

dw 删除一个单词

dnw 删除 n 个单词,

dfa 删除光标处到下一个 a 的字符处( fa 定位光标到 a 处 )

dnfa 删除光标处到第 n 个 a 的字符处

dd 删除一整行

ndd 删除光标处开始的 n 行

d$ 删除光标到本行的结尾

dH 删除屏幕显示的第一行文本到光标所在的行

dG 删除光标所在行到文本的结束

y 是复制的意思,通常搭配一个字符(复制范围)实现复制的功能,常用的如下:

yw 复制一个单词,还有 ynw

yfa 复制光标到下一个 a 的字符处,还有ynfa

yy 复制一行,还有 nyy

y$ 复制光标到本号的结尾

yH 复制屏幕显示的第一行文本到光标所在的行

yG 复制光标所在行到文本的结束

p ,P是黏贴的意思,当执行完复制或者黏贴的命令以后,VIM 会把文本寄存起来。

p 在光标后开始黏贴

P 大写的 P 光标前开始粘贴

撤销操作和恢复

u 撤销刚才的操作

ctrl + r 恢复撤销操作

删除字符操作和替换

x 删除光标当前所在的字符

r 替换掉光标当前所在的字符

R 替换掉从光标开始以后的所有字符,除非 <ESC > 退出,或者 jj (代替 <ESC> 上文有提到)退出。

大小写转换

~ 将光标下的字母改变大小写
3~ 将光标位置开始的3个字母改变其大小写
g~~ 改变当前行字母的大小写
gUU 将当前行的字母改成大写
guu 将当前行的字母全改成小写

3gUU 将从光标开始到下面3行字母改成大写
gUw 将光标下的单词改成大写。
guw 将光标下的单词改成小写

VIM 的重复命令

. 该命令是重复上一个操作的命令
n<command>重复某个命令 n 次,
如 10p复制 10 次,10dd 删除十次。

相关文章

  • Vim 从入门到精通

    《Vim 从入门到精通》

  • Vim

    Vim入门 写代码的时候Vim是个高效的工具,那么如何学习Vim? 墙裂推荐Vim Adventures这个小游戏...

  • Vim入门级基础配置

    本文转载自vim教程网 [Vim入门级配置](https://vim.ink/vimrc-config.html)...

  • Vim 从入门到精通

    Vim from zero to hero - Vim 从入门到精通 原文地址:https://github.co...

  • Vim

    vim 常用快捷键 VIM用法 vim入门进阶与折腾 shift + v 进入可视模式 然后用hjkl选中操作的行...

  • 网址收藏

    vim vimscript vim 快捷键 spacemacs 有机会看一看 多光标 Emacs elisp入门 ...

  • [Linux]vi,vim

    目录 1、入门 [Linux]入门[Linux]目录结构[Linux]vi,vim[Linux]开机、重启和用户登...

  • [Linux]开机、重启和用户登录注销

    目录 1、入门 [Linux]入门[Linux]目录结构[Linux]vi,vim[Linux]开机、重启和用户登...

  • [Linux]入门

    目录 1、入门 [Linux]入门[Linux]目录结构[Linux]vi,vim[Linux]开机、重启和用户登...

  • [Linux]目录结构

    目录 1、入门 [Linux]入门[Linux]目录结构[Linux]vi,vim[Linux]开机、重启和用户登...

网友评论

      本文标题:Vim 入门

      本文链接:https://www.haomeiwen.com/subject/buqpzdtx.html