linux中vim三种模式(linux之vivim命令)

Vim 是对 vi 的扩展,文中的很多操作是 vi 通用的,今天小编就来聊一聊关于linux中vim三种模式?接下来我们就一起去研究一下吧!

linux中vim三种模式(linux之vivim命令)

linux中vim三种模式

Vim 是对 vi 的扩展,文中的很多操作是 vi 通用的

vi 是区分大小写的命令的,也就是说 g与G 是不同的命令

在不同模式下,快捷键是不一样的 模式分 一般模式 编辑模式 指令模式

一般模式用于文件内部操作,编辑模式用于输入编写等,指令模式用于对文本文件进行操作

常用操作

进入一般模式为开始编辑,或者按 esc 后进入

按键

效果

a,i,r,o,A,I,R,O

进入编辑模式

h,backspace

左移动

l,space

右移动

j

下移动

k

上移动

0,

移动到行首

$

移动到行末,1表示当前行的行尾,2表示当前行的下一行的行尾

b

按照单词向前移动 字首

e

按照单词向后移动 字尾

w

按照单词向后移至次一个字首

H

移动到屏幕最上 非空白字

M

移动到屏幕中央 非空白字

L

移动到屏幕最下 非空白字

G

移动到文档最后一行

gg

移动到文档第一行

v

进入光标模式,配合移动键选中多行

Ctrl f

向下翻页

Ctrl b

向上翻页

u

撤销上一次操作

``

回到上次编辑的位置

dw

删除这个单词后面的内容

dd

删除光标当前行

dG

删除光标后的全部文字

d$

删除本行光标后面的内容

d0

删除本行光标前面的内容

y

复制当前行,会复制换行符

yy

复制当前行的内容

yyp

复制当前行到下一行,此复制不会放到剪切板中

nyy

复制当前开始的 n 行

p,P,.

粘贴

ddp

当前行和下一行互换位置

J

合并行

Ctrl r

重复上一次动作

Ctrl z

暂停并退出

ZZ

保存离开

xp

交换字符后面的交换到前面

~

更换当前光标位置的大小写,并光标移动到本行右一个位置,直到无法移动

光标详细操作

按键

效果

Ctrl e

向下滚动

Ctrl b

向上翻页

b

按照单词向前移动 字首

B

按照单词向前移动 字首 忽略一些标点符号

e

按照单词向后移动 字尾

E

按照单词向后移动 忽略一些标点符号

w

按照单词向后移至次一个字首

W

按照单词向后移至次一个字首 忽略一些标点符号

H

移动到屏幕最上 非空白字

M

移动到屏幕中央 非空白字

L

移动到屏幕最下 非空白字

G

移动到文档最后一行

gg

移动到文档第一行

(

光标到句尾

)

光标到局首

{

光标到段落开头

}

光标到段落结尾

nG

光标下移动到 n 行的首位

n$

光标移动到 n 行尾部

n

光标下移动 n 行

n-

光标上移动 n 行

查找命令

指令

效果

*

向下查找同样光标的字符

#

向上查找同样光标的字符

/code

查找 code 一样的内容,向后

?code

查找 code 一样的内容,向前

n

查找下一处

N

查找上一处

ma

在光标处做一个名叫 a 的标记 可用 26 个标记 (a~z)

`a

移动到一个标记 a

d`a

删除当前位置到标记 a 之间的内容

:marks

查看所有标记

指令模式

指令

效果

:q

一般退出

:q!

退出不保存

:wq

保存退出

:w filename

另存为 filename

:jumps

历史编辑文档记录

:set nu

设置行号显示

:set nonu

取消行号显示

:set

显示设置参数

:set autoindent

自动缩排,回车与第一个非空格符对齐

:syntax on/off

根据程序语法高亮显示

:set highlight

高亮设置查看

:set hlsearch

查找代码高亮显示

:nohlsearch

暂时关闭高亮显示

:set nohlsearch

永久关闭高亮显示

:set bg=dark

设置暗色调

:set bg=light

设置亮色调

屏幕翻滚

按键

效果

Ctrl f

向文件尾翻一屏幕

Ctrl b

向文件首翻一屏幕

Ctrl d

向文件尾翻半屏幕

Ctrl u

向文件首翻半屏幕

插入命令

按键

效果

i

在光标前

I

在当前行首

a

在光标后

A

在当前行尾部

o

在当前行下新开一行

O

在当前行上新开一行

r

替换当前字符

R

替换当前行及后面的字符,直到按 esc 为止

s

从当前行开始,以输入的文本替代指定数目的字符

S

删除指定数目的行,并以输入的文本替代

ncw,nCW

修改指定数目 n 的字符

nCC

修改指定数目 n 的行

删除命令

按键

效果

ndw,nDW

删除光标开始及其后 n-1 个字符

dw

删除这个单词后面的内容

dd

删除光标当前行

dG

删除光标后的全部文字

d$

删除本行光标后面的内容

d0

删除本行光标前面的内容

ndd

删除当前行,以及其后的 n-1 行

x

删除一个字符,光标后

X

删除一个字符,光标前

Ctrl u

删除输入模式下的输入的文本

多窗口模式

指令

效果

:split

创建新窗口

Ctrl w

切换窗口

Ctrl-w =

所有窗口一样高

Ctrl-w 方向键

多窗口视图切换

多文件编辑

指令

效果

:args

列出当前编辑的文件名

:next

打开多文件,使用 n(Next) p(revious)

:file

列出当前打开的所有文件

vim 自定义技巧复制粘贴取消缩进

:set paste

进入 paste 模式以后,可以在插入模式下粘贴内容,不会有任何变形这个参数做了这么多事:

textwidth设置为0 wrapmargin设置为0 set noai set nosi softtabstop设置为0 revins重置 ruler重置 showmatch重置 formatoptions使用空值

下面的选项值不变,但却被禁用

lisp indentexpr cindent

绑定快捷键来激活 / 取消 paste 模式

:set pastetoggle=<F11>

出现粘贴换行符错位,设置一下 .vimrc

" this can change way of paste words :set paste " default tabstop=8 :set tabstop=4 " use keyboard F11 to change paste mode :set pastetoggle=<F11>

vim 缩进

Normal Mode 下,命令>>将对当前行增加缩进,而命令<<则将对当前行减少缩进在命令前使用数字,来指定命令作用的范围

5<<

在 Insert/Replace Mode 下

  • Ctrl-Shift-t可以增加当前行的缩进
  • Ctrl-Shift-d则可以减少当前行的缩进
  • 使用0-Ctrl-Shift-d命令,将移除所有缩进

需要注意的是,当我们输入命令中的 “0” 时,vim 会认为我们要在文本中插入一个 0,并在屏幕上显示输入的“0”;然后当我们执行命令 0-Ctrl-Shift-d 时,Vim 就会意识到我们要做的是减少缩进,这时 0 会就会从屏幕上消失

vim tab 缩进

tab 缩进宽度默认为 8 个空格

我们可以使用以下命令,来修改缩进宽度

:set tabstop=4 :set softtabstop=4 :set shiftwidth=4 :set expandtab

  • tabstop: 表示一个 tab 显示出来是多少个空格的长度默认 8
  • softtabstop: 表示在编辑模式的时候按退格键的时候退回缩进的长度当使用 expandtab 时特别有用。
  • shiftwidth: 表示每一级缩进的长度一般设置成跟 softtabstop 一样。 当设置成 expandtab 时缩进用空格来表示noexpandtab 则是用制表符表示一个缩进
  • expandtab 选项,用来控制是否将 Tab 转换为空格, 但是这个选项并不会改变已经存在的文本,如果需要应用此设置将所有 Tab 转换为空格,需要执行

:retab!

vim 自动缩进
  • cindent

:set cindent

vim 可以很好的识别出 C 和 Java 等结构化程序设计语言,并且能用 C 语言的缩进格式来处理程序的缩进结构

  • smartindent

:set smartindent

在这种缩进模式中,每一行都和前一行有相同的缩进量,同时这种缩进形式能正确的识别出花括号,当遇到右花括号(}),则取消缩进形式。此外还增加了识别 C 语言关键字的功能。如果一行是以 #开头的,那么这种格式将会被特殊对待而不采用缩进格式。

  • autoindent

:set autoindent

在这种缩进形式中,新增加的行和前一行使用相同的缩进形式

显示隐藏符号
  • 默认不显示 :set nolist
  • 显示 :set invlist

" normal is :set nolist | show hide is :set invlist :set nolist

使用 vim 寄存器

使用 vim 寄存器 “ p 粘贴

根本不用考虑是否自动缩进,是否 paste 模式,直接原文传递

如果想保存原寄存器中内容而同时增加新的内容,就要在 yy 前增加标签标签以双引号开始,跟着的是标签名称,可以是数字 0-9,也可以是 26 个字母

显示所有寄存器内容

:reg

注意两个特殊的寄存器:* 和

这两个寄存器是和系统相通的,前者关联系统选择缓冲区,后者关联系统剪切板通过它们可以和其他程序进行数据交换

若寄存器列表里无 * 或 寄存器,则可能是由于没有安装 vim 的图形界面所致sudo apt-get install vim-gnome

设置 vim 永远显示行号

修改 vim 的配置文件加入 set nu

vi ~/.vimrc

然后输入

set nu

当然也可以输入其他配置类似

set nonu syntax on

vimrc 常用配置

设置行号

set nu

设置自动缩进

set autoindent

设置tab占n个字符

set tabstop=n

设置以空格代替tab(因为有部分场合不允许使用tab)

set expandtab

设置缩进字符数为n

set shiftwidth=n

设置自动语法高亮

syntax on

原文链接:https://rumenz.com/rumenbiji/linux-vi-vim.html

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页