vi的常用操作命令,快捷键基础操作

 一 移动光标的方法
【crtl】 【f】屏幕向下移动一页
【crtl】 【b】屏幕向上移动一页
0或功能键home, 移动到这一行的最前面的字符处
$或功能键end, 移动到这一行的最后面的字符处
G 移动到这个文件的最后一行
nG 移动到这个文件的第n行,n为数字
gg 移动到这个文件的第一行
n【enter】 光标向下移动n行,n为数子
u 复原前一个操作
【crtl】 r 重做前一个操作
. 小数点,重复前一个操作
 
 
二 查找和替换
/word 向下寻找一个名称为word的字符串
?word 向上寻找一个字符串为word
n 重复向下查找
N 重复向上查找
:n1,n2s/word1/word2/g n1,n2为数字,查找n1行到n2行的word1然后替换为word2
:1,$s/word1/word2/g 查找1行到最后一行的word1然后替换为word2
:1,$s/word1/word2/gc 查找1行到最后一行的word1然后替换为word2,并提示用户确认信息
 
 
三 删除复制和粘贴
x,X x=【Backspace】,X=【delete】
nx 连续向后删除n个字符,n为数字
dd 删除整行
ndd 向下删除n行,n位数字
yy 复制光标所在行
nyy 复制光标所在的向下n行
p,P p粘贴在光标所在下一行,P粘贴光标所在上一行
 
 
四 进入插入模式或替换模式
i,I i光标所在处插入,I为在目前所在行的第一个非空格符处开始插入
a,A a光标所在的下一个字符处插入,A为从光标所在行的最后一个字符处开始插入
o,O o光标所在行下一行插入,O为上一行插入
r,R r替换光标所在的那一个字符一次,R一直替换
 
五 命令行的保存离开
:w 保存
:w! 强制写入保存
:q 离开vi
:q! 如修改过則不保存,强制退出
:wq 保存后离开vi
:!command vi模式下显示shell命令
:set nu 显示行号
:set nonu 取消行号
:w [filename]  另存为filename文件
 
六      块选择
v,V,[crtl] v
v          字符选择
V          行选择
[crtl] v    快选择
y          复制选择的块
d          删除选择的块
 
七      多文件编辑
 
vim /etc/hosts /etc/man.cfg
一个vim打开了两个文件
:n          编辑下一个文件
:N          编辑上一个文件
:file       列出这个vim打开的所有文件
 
此时在使用复制,等操作时很简单,有点共用粘贴板得意思
 
八       多窗口功能
两种情况
1,一个文件太大,如果你想前后文件对比,可以用到多窗口
2,有两个需要对比的文件,不想用多文件编辑,可以用多窗口
 
:sp [filename]    打开一个新窗口如果不加文件名则分窗口本文件,否则为多文件
[ctrl] w j
[ctrl] w 向下键   按键方法,先按下[ctrl]不放,再按下w后放开所有的按键,然后再按下j(向下键),则光标移动到下方的窗口
 
[ctrl] w k
[ctrl] w 向上键   同上,但是是移动到上边的窗口
 
 
[ctrl] w q        离开窗口
或   :q

vi下有三种模式
一般模式:
以vi打开一个文件就进入此模式了(默认模式),在此模式下可以上下左右移动光标,可以删除,复制,粘贴处理文本
编辑模式:
在一般模式下按【i,a,o,I,A,O】进入编辑模式,在此模式下可以对文本进行编辑,按ESC退出编辑模式,进入一般模式。
命令行模式:
在一般模式下按【:/?】会将光标移动到最底下那一行,此时进入命令行模式,可以进行查找、替换、读取、保存、退出、显示行号等操作

Vim简介

Vim 编辑器是一个模式编辑器。这意味着在不同状态下编辑器有不同 的行为模式。Vim编辑程序有三种操作模式,分别称为 Edit模式Insert模式Command模式.
刚启动时 Vim 工作于 edit 模式, 主要是用来进行一下文本操作;
进入 Insert 模式你需要使 用"i"命令(i 意为 Insert), 接下来就可以直接输入了;
进入 Command 模式需要使用" : ", 按下<Esc>键退出 Insert 模式回到 Normal 模式。


跟着鸟哥学Linux系列笔记0-扫盲之概念

【crtl】 【f】屏幕向下移动一页 【crtl】 【b】屏幕向上移动一页 0或功能键home,移动到这一行的最前面的字符处 $或功能...

一般模式的可用按钮说明:
移动光标
【h、j、k、l】可分别控制光标的左、上、下、右移动
【ctrl b】屏幕向前移动一页
【ctrl f】屏幕向后移动一页
【n<space>】光标向右移动n个字符
【home】光标移动到所在行最前面
【end】光标移动到所在行的最后面
【w】光标跳到下个字的开头
【e】光标跳到下格子的末尾
【H】光标移动到所在屏幕的最上方那一行的第一个字符
【M】光标移动到所在屏幕的最中间的一行的第一个字符
【L】光标移动到所在屏幕的最下方的那一行的第一个字符
【G】移动到文件的最后一行
【nG】移动到文件的第几行(可配合:setnu)
【gg】移动到文件的第一行(相当于【1G】)
【n<enter>】光标向下移动n行
【{】按段上移
【}】按段下移
查找与替换
【/word】从光标处向下寻找名为word的字符串
【?word】从光标处向上寻找名为word的字符串
【n】重复前一个查找动作
【N】与n相反,反向重复前一个查找动作(之前为/word向后查找,输入N则是向前查找)
【:n1,n2s/word1/word2/g】n1与n2为数字,在n1与n2行之前查找word1字符串,并将该字符串替换为word2
【:1,$s/word1/word2/g】在第一行到最后一行之间查找word1字符串,并将该字符串替换为word2
【:1,$s/word1/word2/gc】在第一行到最后一行之间查找word1字符串,并将该字符串替换为word2,且在替换前提示用户是否确认替换

文件操作:

  • vim 打开vim
  • **vim filename ** 打开文件, 没有则是创建名为filename的文件
  • vim file1 file2 file3 ... 同时打开多个文件
  • :w[file] 另存为file
  • :r[file] 将[file]的内容加到光标行后面
  • :[m],[n]w[file] 将m到n的内容保存为[file]
  • :q 退出
  • :wq 保存退出

跟着鸟哥学Linux系列笔记0-如何解决问题

删除复制与粘贴:
【x】向后删除一个字符串
【X】向前删除一个字符串
【nx】向后删除n个字符串
【nX】向前删除n个字符串
【dd】删除光标所在行
【ndd】删除当前行开始向下n行
【d1G】删除光标所在行到第一行的所有数据
【dG】删除光标所在行到最后一行的所有数据
【d$】删除光标所在所,到该行的最后一个字符
【d0】删除光标所在处,到该行的最前一个字符
【yy】复制光标所在的那一行
【nyy】复制光标所在的向下n行
【y1G】复制光标所在行到第一行的所有数据
【yG】复制光标所在行到最后一行的所有数据
【y0】复制光标所在的前一个字符到该行首的所有数据
【y$】复制光标所在字符到该行行尾的所有数据
【p】将已复制的数据在光标的下一行粘贴上
【P】将已复制的数据在光标的上一行粘贴
【u】撤销,恢复上一个操作
【ctrl r】 重做上一个操作
【.】重复前一个操作

光标移动命令:

  • h 左移一个字符
  • [n]l 向右移动n个字符
  • l 右移一个字符,这个命令很少用,一般用w代替。
  • [n]h 向左移动n个字符
  • k 上移一行
  • [n]k 上移n行
  • j 下移一行
  • [n]j 下移n行
  • 以上四个命令可以配合数字使用,比如20j就是向下移动20行,5h就是向左移动5个字符,和下面方向键上下左右是一样的功能. 在Vim中,很多命令都可以配合数字使用.
  • ^ 移动光标到行首;
  • $移动光标到行尾;
  • w 向前移动一个单词(光标停在单词首部),如果已到行尾,则转至下一行行首。此命令快,可以代替l命令。
  • b 向后移动一个单词 2b 向后移动2个单词
  • e,同w,只不过是光标停在单词尾部
  • H 移动到当前窗口的首行;
  • M 移动到当前窗口的中间位置;
  • L 移动光标到当前窗口的最后一行;
  • [n]↓ 向下移动n行
  • [n]↑ 向上移动n行
  • [n]→ 向右移动n个字符
  • [n]← 向左移动n个字符
  • gg 移动到第一行
  • G 移动到最后一行(G也就是 shift g)
  • [n]G 移动到第n行
  • i 在当前位置生前插入
  • I 在当前行首插入
  • a 在当前位置后插入
  • A 在当前行尾插入
  • o 在当前行之后插入一行
  • O 在当前行之前插入一行

跟着鸟哥学Linux系列笔记1

一般模式切换编辑模式可用命令:
【i】从当前光标所在处插入
【I】从当前光标所在行的第一个非空格字符前插入
【a】从当前光标所在的下一个字符插入
【A】从当前光标所在行的最后一个字符插入
【o】从当前光标所在行的下面插入新的一行
【O】从当前光标所在行的上面插入新的一行
【r】会取代光标所在位置的字符一次
【R】会一直取代光标所在的文字,直到按下ESC为止
编辑模式下
【ctrl p】或者【ctrl n】自动补全

字符串替换:

  • :s/old/new 替换当前行中第一个old为new
  • :s/old/new/g 替换当前行中所有old为new
  • :[m],[n]s/old/new 替换m到n行中第一个old为new
  • :[m],[n]s/old/new/g 替换m到n行中所有old为new
  • :%s/old/new/g 替换全文中所有old为new
    例子::20,40s//* 将20到40行的替换为*

常用的文本编辑器:Emacs, pico, nano, joe, vim

一般模式切换至命令行模式可用按钮说明:
【:w】保存编辑的内容
【:w!】强制写入该文件
【:q】离开vi
【:q!】不保存强制退出
【:wq】保存并退出,等价于【:x】、【shift zz】
【:w filename】将编辑的数据保存成为另一个文件
【:r filename】在编辑的数据中读入另一个数据文件。即将filename这个文件的内容加到光标所在行的后面
【:n1,n2 w filename】将n1到n2的内容保存成filename文件
【:! command】暂时离开vi到命令行模式下执行command的显示结果
【: set nu】显示行号
【: set nonu】与set nu相反,取消行号

快捷复制删除命令:

  • yy 复制当前行
  • dd 删除当前行
  • [n]yy 复制本行向下n行
  • [n]dd 删除本行向下n行
  • u 撤销前一步操作(u = undo)
  • U 撤销整行的操作
  • ctrl r 重做(Redo),即撤销的撤销(手欠型,的拯救者,)。
  • p 粘贴复制文本(p = paste)
  • x 删除当前字符
  • [n]x 删除n个字符
  • dl 删除当前字符(== x)
  • dh 删除前一个字符
  • dd 删除当前行
  • dj 删除上一行
  • dk 删除下一行
  • yG 复制至文件尾
  • dG 删除之文件尾部
  • ggyG 复制文件所有内容
  • ggdG 删除文件所有内容
  • $ 移动光标到行尾
  • y$ 复制光标处至行尾
  • d$ 删除光标处至行尾
  • ^ 移动光标到行首
  • y^ 复制光标处至行首
  • d^ 删除光标处至行首
  • 多行编辑 crtl v,上下移动光标用来选中多行 Shift I 编辑插入内容,Esc,Esc(命令生效需要按 ESC )
  • 多行缩进 crtl v,上下移动光标用来选中多行 ,“<” (或者 “>”)用来减少缩进(增加缩进),“=”用来自动缩进

VIM-为什么选择vi编辑器

块选择:
【v】选择字符,会将光标经过的地方反白选择
【V】选择行,会将光标经过的行反白选择
【y】将反白的地方复制
【d】将反白的地方删除
缩进:
一般模式下可以使用<<、>>来缩进行,默认缩进8个空格,可以使用【: set shiftwidth=4】设置每次缩进4个空格

常用的查找命令

  • /word 向下查找word字符串
  • ?word 向上查找word字符串

  1. 所有Unix Like系统都会内置vi编辑器,而其他文本编辑器则不一定存在

多窗口功能:
【:sp filename】开启一个新窗口,如果有加filename表示在新窗口开启一个
新文件,否则表示两个窗口通为一个文件,同步显示
【ctrl w j】将光标移动至下面的窗口。(按住ctrl不放再按w,松开ctrl和w,按下j)
【ctrl w k】将光标移动至上面的窗口

VIM调用shell命令

  • :!command 不退出vim,执行命令后结果在命令区域,不会改变文件内容
  • :r!command 不退出vim,执行命令后结果插入到当前行的下一行
  • :[m],[n]w!command 将m到n行的内容输入到shell命令由command中处理,执行命令后结果在命令区域,不会改变文件内容
  • :[m],[n]!command 将m到n行的内容输入到shell命令由command中处理,执行命令后结果替换m到n指定范围内内容

例子::62!tr [a-z][A-Z] 将62行的小写字母转为大写字母

  2. 很多软件的编辑接口都会主动调用vi,例如contab, visudo, edquota

vi 443 test.txt 进入到test.txt的443行行首

打开多个文本

  • :vsp 左右分屏
  • :sp 左右分屏
  • crtl ww窗口切换
  • :q 退出
    例子::vsp CameraTestBase.h

vim [file1][file2] 同时打开file1和file2
:n 到前一个文件
:N 到后一个文件
:f 显示正在编辑文件的信息

很多快捷键都是可以随意组合的, 用出自己的习惯, 文本不定期更新内容.

  3. vim具有程序编辑能力,可以主动以字体颜色辨别语言正确性

  4. 程序简单,编辑速度相当快速

  第2点比较重要,因为太多Linux命令默认使用vi作为数据编辑的接口

vi的使用:

  vi分为3种模型:一般模式,编辑模式,命令模式

一般模式:以vi打一个文件进入一般模式,可以使用上下左右键来移动光标,可以删除字符或删除整行,也可以复制,粘贴文件数据

编辑模式:在一般模式可以删除、复制、粘贴,但却无法编辑文件内容,要等到你按下i, o, a, r等任一个字母后才能进入编辑模式,按下这些键之后,在界面的左下方会出现INSERT或REPLACE,才可以进行编辑,如果要回到一般模式,则必须按下ESC退回编辑模式

命令行模式:在一般模式中,输入:, /, ? 3个中的任意一个字符就可以将光标移动到最下面一行,在这个模式中,可以查找数据、读取、保存、大量替换字符、离开vi、显示行号等

下图为相互转换图:

图片 1

按键说明:

移动、翻页

h: 光标向左移动一个字符,同方向左键

j: 光标向下移动一个字符,同方向下键

k: 光标向上移动一个字符,同方向上键

l: 光标向后移动一个字符,同方向向右键

多个字符移动则为:n 方向,如:向左移动30个字符为30h

ctrl f: 向下翻页

ctrl b: 向上翻页

ctrl d: 向下翻半页

ctrl u: 向上翻半页

: 光标移到非空格的下一行

-: 光标移到非空格的上一行

n 空格:向后移动n个字符,20[space],向后移动20个字符

0或home: 移到这一行最前面

$或end: 移到到这一行最后面

H: 光标移至屏幕最上方那行第一个字符

M: 光标移至屏幕中央那行第一个字符

L: 光标移至屏幕最下方那行最后第一个字符

G: 移到文件最后一行

nG: 移至文件第n行

gg: 移至文件第一行

n[Enter]: 光标向下移动n行

/word: 向下查找

?word: 向上查找

n: 向下查找

N: 向上查找

替换

:n1,n2s/word1/word2/g: 在n1~n2之间找word1, 并替换为word2

:1, $s/word1/word2/g: 在1~最后一行之间找word1, 并替换为word2

:1, $s/word1/word2/gc: 在1~最后一行之间找word1, 并替换为word2,在所有替换之前提示用户

删除

x, delete: 向后删除一个字符

X, backspace: 向前删除一个字符

nx: 向后删除n个字符

nX: 向前删除n个字符

dd: 删除光标所在的那一整行

ndd: 删除光标所在行的向下20行

d1G: 删除光标所在列第1行的所有数据

dG: 删除光标所在列到最后一行的所有数据

d0: 删除从光标所在处到该行的最前面一个字符

复制

yy: 复制光标所在的那一行

nyy: 复制光标所在的向下行

y1G:复制光标所在行到第一行的所有数据

yG: 复制光标所在行到最后一行的所有数据

y0: 复制光标所在那个字符到该行行首的所有数据

y$: 复制光标所在那个字符到该行结尾的所有数据

粘贴

p, P将已复制的数据在光标下一行粘贴,大写P则为贴在光标上一行

其他

J: 将光标所在行与下一行的数据结合成同一行

c: 重复删除,例如10cj, 向下删除10行

u: 复原前一个操作

ctrl r: 重做上一个操作

.: 恢复前一个操作

编辑模式:

i: 从目前光标所在处插入

I: 从目前光标所在行第一个非空格符处开始插入

a: 从目前光标所在处下一个字符插入

A: 从目前光标所在行的最后一个字符插入

o: 从目前光标所在的下一行处插入新的一行

O: 从目前光标所在的上一行处插入新的一行

r: 替换光标所在的那个字符一次

R: 替换光标所在行所有匹配字符

命令行模式:

:w: 将编辑的数据写入到硬盘中

:w!: 若文件属性为“只读”时,强制写入文件,写入前会校验权限

:q: 退出vi

:q!: 强制离开不保存文件

:wq: 保存后离开

:wq!: 强制保存并离开

ZZ: 大写Z,若文件无更改,则不保存离开;若文件有更改,则保存离开

:w[filename]: 将编辑文件保存为另一个文件

:r[filename]: 在编辑的数据中,读入另一个文件的数据,将file这个文件内容加到光标所在行后面

:n1,n2 w[filename]: 将n1~n2内容保存成filename文件

:! command: 暂时离开vi到命令行模式下执行command的显示结果,例如::! ls /home即可在vi当中查看/home下面以ls输出的文件信息

:set nu: 显示行号,设置之后,会在每一行前缀显示行号

:set nonu: 不显示行号

vim的备份文件,恢复与打开时的警告信息

vim会主动创建备份文件:/tmp/vitest/.man.con.swp, 以swp结尾的备份文件

在编辑时,不正常保存,再撕开时会找开,*.swp文件

命令:alias,将显示所有的简写

块选择:

ctrl v: 光标移动过的地方开始反白

y: 将反白地方复制

d: 将反白地方删除

多文件编辑:

:n: 编辑下一个文件

:N: 编辑上一个文件

:files: 列出目前这个vim打开的所有文件

>vim filename / filename2

多窗口功能:

在命令行输入::sp[filename],即可多窗口编辑,以下为详细步骤

  1. 先打开文件:vim /man.config

  2. 输入: :sp

  3. 输入:G

  4. 再输入::sp /man.config

  5. 此时3屏显示同一个文件

各个屏幕之间切换:ctrl w k(向上键): 找到上一个编辑窗口,ctrl w j(向下键): 找到下一个编辑窗口,ctrl w q: 结束离开

vim环境设置与记录:~/.vimrc, ~/.viminfo

查看设置,在一般模式输入::set all,即可查看当前文件所有设置

整体vim设置值,一般是放在/etc/vimrc文件中,不过不建议修改它,可以修改~/.vimrc这个文件,默认不存在,可以自行手动创建

vim常用命令示意图:

图片 2

其他问题:

中文编码问题:

  1. Linux系统默认语系数据:/etc/sysconfig/i18n

  2. 在bash下,与LANG变量有关

  3. 文本原本编码

  4. 打开终端机的软件

DOS与Linux的断行字符:

在Linux中Enter按键为LF,而在DOS中Enter按键为CRLF,在Linux中显示DOS回车会多出^M$

使用Linux中的格式转换工具可以进行转换:

  dos2UNIX [-kn] file [newfile]

  UNIX2dos [-kn] file [newfile]

最终建议:由于字符编码方式不一样,不建议在windows系统当中将文件编辑之后,才上传到Linux系统,容易发生错误,而且如果在不同的系统之间复制一些纯文文件时,使用以上两个 命令转换

语系编码转换:如何将big5编码转成utf-8,使用conv

  >iconv -f 原本编码 -t 新编码 file [-o newfile]

本文由星彩网app下载发布于星彩网app下载,转载请注明出处:vi的常用操作命令,快捷键基础操作

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。