1. Vim 批量文本操作之g、norm命令和range概念
有这样一段文本:
期望得到的结果是:
通过如下命令得到:
想得到的结果是:
删除空行
2. linux下vim编辑器命令大全
vim可以分为三种状态,分别是 命令行模式(command mode) 、 输入模式(Insert mode) 和 底行模式(last line mode) ,这 3 种工作模式可随意切换,如下图所示。
使用vim编辑文件时,默认处于命令行模式。此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
下图所示是vim处于命令行模式的状态示意图。
在输入模式下,vim可以对文件执行写操作,类似于在Windows系统的文档中输入内容。
使vim进行输入模式的方式是在命令模式状态下输入 i 、 I 、 a 、 A 、 o 、 O 等插入命令(各指令的具体功能下表所示),当编辑文件完成后按 esc 键即可返回命令模式。
下图所示为vim处于输入模式模式下的示意图。
底行模式用于对文件中的指定内容执行保存、查找或替换等操作。
使vim切换到底行模式的方法是在 命令行模式 状态下按 : 键(注意是英文符号),此时vim窗口的左下方出现一个 : 符号,这是就可以输入相关指令进行操作了。
指令执行后vim会自动返回命令行模式。如想直接返回命令行模式,按 esc 即可。
下图所示为vim进入底行模式后的状态。
对于新手来说,经常不知道自己处于什么模式。不论是自己忘了,还是不小心切换了模式,都可以按一次 esc 键返回命令行模式。如果你多按几次 esc 键后听到"嘀————"的声音,则代表你已经处于命令行模式了。
打开文件
打开文件时光标处于文件尾部
打开文件时,光标定位到第几行
字符移动
这些移动键都可以加上数字(5h:向左移动5个字符格)
单词移动
行内跳转
行间移动
在底行模式下,直接给出行号,实现跳转
用法:起始地址,结束地址 s @要替换内容@替换后内容@gi(@分隔符)
例 :1,$s/a/A/g 把文件中全部的a换替换成A,全局替换
显示取消行号
设定自动缩进(写脚本时)
查找到的文本高亮显示
语法高亮
/etc/vimrc :全局配置文件,永久有效
~/.vimrc :个人配置文件,每个用户的家目录中,若不存在,手动创建
对于第一次用vim的童鞋,有几点需要提醒一下:
3. 在vim编辑器中,执行命令模式快捷键“G”后操作会出现本文结尾还是本页结尾
题主你好,
在命令模式下, 按下大写的字母"G"后,光标跳到整个文件的末尾; 与之相对应的是gg,会跳到整个文件的开头.
因此题主问题中的答案是: 本文结尾
*.上面答案是 "本文结尾"的前提是: "本文结尾"比"本页结尾"范围要广. 也就是说按下大G后, 光标跳到了整个文本的最后位置.
-----
希望可以帮到题主, 欢迎追问.
4. Linux知识点之Vim
进入vim编辑器
命令模式: 在这种模式下,可以通过输入vi的命令对文件的内容就行处理(复制,删除,移动等),也可以通过按光标来移动光标
编辑模式: 在这种模式下,可以在光标处输入内容
命令项模式: 在命令模式下,用户输入冒号后,光标会跳到底行,然后输入命令
命令模式: 输入a A i I o O等命令 -> 编辑模式
编辑模式: 按ESC键 -> 命令模式
命令项模式: 输入冒号 -> 命令项模式
i 在光标前插入
a 当前位置编辑
A 快速到达行尾并进入编辑模式
O 在当行上面插入一个空行并进入编辑模式
o 在当行下面插入一个空行并进入编辑模式
第一行 gg
最后一行 G
移动到100行 100gg
x: 删除光标处的字符 X:删除光标前的一个字符
d0: 删除光标所在行的第一个字符到当前光标的前一个字符的一串字符
D: 删除从当前光标所在字符到当前光标所在行的最后一个字符的一串字符
dd: 删除光标所在行的所有字符/剪切当前行
dw: 删除从光标处字符开始的第一个单词
u: 撤销命令,一步一步撤销
跳转末行 G
跳转首行 gg 跳转到第一行
跳转行首 I (大写字母)
跳转行末 快速到达行尾并进入编辑模式
下一行插入 o(小写字母o)
复制五行 5yy
删除10行 10dd
:w 保存文件 不退出vi :wq 保存文件,退出vi :q! 不保存文件,退出vi
5. vim使用指南
命令行模式:进入vim后的默认模式,用户可以输入vim命令来管理自己的文档,此时从键盘上输入任何字符都会当成编辑命令,输入合法的vim命令,vim会完成相应的动作
文本输入模式:在命令模式下输入i/I 或者a/A 进入输入模式,就可以在文本文件内输入内容了,按下ESC则回到命令行模式
末行模式:在命令行模式下输入:进入末行模式
一般进入vim 都是vim后面跟着文件名
如
如果当前文件夹下没有此文件,则会在目录下新生成此文件
注:如果你直接vim进入编辑器,而没有跟文件名,他也会进去,但是你退出时需要指定文件名称
如果你想进入编辑器中的具体某一行(指光标所在的行)
需要进入文本输入模式
命令模式下输入i进入文本输入模式可以输入内容了,在光标所在字符之前进行插入
输入I 是在光标所在行行首进行输入
输入a是在光标所在字符的后面进行插入
输入A是在光标所在行行末进行输入
输入o在光标所在行下面插入一空行
输入O在光标所在行上面插入一空行
你可以在输入模式下按Delete或者退格键(Backspace)进行删除文本,我将介绍一些在命令行下如何删除文本
x —— 删除光标所在的字符
X —— 删除光标所在字符前面的字符
D或者d$ ——删除光标所在位置到行末的字符
dd——删除光标所在一行
yy——复制光标所在行
Y——复制光标所在位置到行尾
y0——复制光标前一位到行首
p——粘贴
v/V——选中文本
u/U——撤销
.——重复上次执行的命令
需要进入文本末模式
:q——退出
:q!——强制退出
:w——保存
:wq——保存并退出
j——向下
k——向上
h——向左
l——向右
H——前面加数字代表光标移动到哪行行首,(当前屏幕)
M——移动到文本中间,或者屏幕中间行的行首
L——移动到文本末或者屏幕底部行行首,可以加数字
G——不受屏幕限制,是文本的行数
:set number ——设置行号
/string ——查找命令
6. vim的命令中说法正确的有
vim的命令中说法正确的有
1、普通模式normalmode常用基本命令,在此模式输入不会识别为输入字符,而是命令控制,如删除字符x,复制y等
2、插入模式Insertmode正常的文本输入模式
3、命令模式commandmode可以通过单个或者多个字符进行命令控制,命令非常多
4、视图模式visualmode命令模式下v/ctrl加v进入选择模式可通过移动光标(用方向键或hjkl)选中多字符或者多行
5、替换模式replacemode替换模式,R进入该模式,输入字符替换当前光标后字符。
7. VIM用什么命令跳到文件头和文件尾
1、vim中用大写的字母G命令跳到文件尾。G命令可以跳到相应的行,默认缺省状态是跳转到最后一行即文件尾。
8. vim模式与模式切换vim命令模式
vim有三种模式,本文介绍VIM模式与vim模式切换的方法。
vim命令 模式, 编辑模式 , 尾行模式 和文本编辑命令。
Vim编辑模式插入字符,行尾、行首插入,删除一个字符和删除整行命令,Vim复制和粘贴命令,vim替换输入以及撤销和反撤销命令,Vim保存和另存为文件,显示vim当前编辑文件名。
我们使用vim编辑器的常用文件操作主要是:插入、删除、复制、粘贴、替换、撤销、保存、另存为。
在介绍Vim中的上述基本文件操作命令前,需要先介绍下vim的操作模式。因为vim的各种对文件操作命令需要在不同操作模式下使用。
一、Vim三种操作模式
Vim编辑器一共有3种模式,分别为 命令模式 (默认)、编辑模式、尾行模式。这3种模式的转换关系如下图所示。
vim三种模式
1 命令模式(command mode)
命令模式是Vim的默认操作模式,当使用vim命令打开一个文件时,默认进入的就是命令模式。不管用户处于何种模式,只要按下Esc键就可使进入命令行模式
2 编辑模式(input mode)
只有在vim编辑模式下,才能将键盘键入的内容输入到当前打开的文件中
在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本编辑模式
3 尾行模式(last line mode)
尾行模式主要用于保存文件或退出Vim,同时也可以设置编辑环境和一些编译工作,如列出行号(set nu)、寻找字符串(/target)等
在命令模式下,用户按冒号键(:)即可进入末行模式下,此时Vi会在显示窗口的最后一行显示一个”:“作为末行模式的提示符,等待用户输入命令
二、Vim文本编辑命令
约定:在没有特殊说明的情况下,以下Vim编辑命令部分提到的命令均是在命令模式下使用。
1 vim插入命令
在命令模式下按以下按键可进入编辑模式,执行插入操作,具体包括:
从光标当前所在行的【行首】处开始插入:I
从光标当前所在行的【行尾】处开始插入:A
从光标当前所在行的【下一行】处开始插入:o
从光标当前所在行的【上一行】处开始插入:O
从光标当前所在位置的【前】一个字符处开始插入:i
从光标当前所在位置的【后】一个字符处开始插入:a
tips:i (insert)是在当前位置插入,a (append)表示是在后面追加
2 vim删除命令
在命令模式下按以下按键可执行删除操作,具体包括:
删除从光标所在位置到当前【单词结束】部分的内容并进入插入模式:cw、cW
删除从光标所在位置到当前【单词开始】部分的内容并进入插入模式:cb、cB
删除从光标所在位置到当前【单词结束】部分的内容但不进入插入模式:dw、dW
删除从光标所在位置到当前【单词开始】部分的内容但不进入插入模式:db、dB
删除光标位置的【一个】字符:x
删除当前光标所在【行】:dd
删除从光标所在位置到当前【行首】的内容:d0
删除从光标所在位置到当前【行尾】的内容:d$
tips:
(1) Vim的命令中,0 表示行首,$ 表示行尾,更多内容可参考卡拉图Vim操作范围、文件范围介绍
(2) w(word)、b(back)命令用于光标移动,具体可参考卡拉图:vim光标移动命令汇总
(3) cW、cB、dW、dB 命令操作的单词是以空白字符(空格、Tab)分隔的字符串
删除当前【段落】从光标位置开始到【段末】的内容:d}
删除当前【段落】从光标位置开始到【段首】的内容:d{
删除当前【句子】从光标位置开始到【句末】的内容:d)
删除当前【句子】从光标位置开始到【句首】的内容:d(
tips:Vim命令中用 ( 和 ) 表示句子,{ 和 } 表示段落
3 vim复制命令、vim粘贴命令
在命令模式下按以下按键可执行复制、粘贴操作,具体包括:
将最后一次删除或复制操作的文本内容粘贴到光标所在字符之【后】:p
将最后一个删除或复制操作的文本内容粘贴到光标当前字符之【前】:P
复制从光标所在位置到当前【单词结束】部分的内容:yw
复制光标所在【行】的所有字符 (包含换行符):yy
tips:yyp 操作可以实现复制一整行内容到当前所在行的下一行
4 vim替换命令
在命令模式下按以下按键后,再输入字符可替换原始文件中的内容
一直替换光标所在字符,直到按下[ESC]键为止:R
删除、复制操作的操作单位可以加操作次数,操作对象的范围为:操作次数 * 操作单位
替换光标当前所在字符一次:r
例如:d3w命令表示删除三个单词,10dd命令表示从光标所在行开始删除后面的十行,更多内容可以参考Vim中的操作符和动作命令。
5 vim撤销命令、vim回退反撤销命令
在命令模式下可执行撤销操作
撤销最近的一次操作:u
恢复最近的一次操作(取消撤销):<Ctrl> + r
tips:多次执行u 命令可以连续撤销最近的操作
6 vim保存命令
在尾行模式下执行以下命令可保存当前编辑的文件内容
保存当前编辑的文件::w
保存当前编辑的文件并退出vim::wq
强制将当前编辑的文件保存::w!
tips:上述操作是在尾行模式下执行的,所以命令都是以:开头
7 vim另存为命令
在尾行模式下执行命令 :w a.txt 可将vim当前打开的文件另存为新文件a.txt.
tips:w(write) 表示将文件存档,: 表示尾行模式命令。
8 vim显示当前文件名的方法
命令 <Ctrl> + g 可显示当前编辑文件名及行数,可以在不退出 Vim 的情况下了解当前编辑文件的信息,更多内容,可参考30个vim常用命令和使用 vim技巧 。
Vim入门级文件编辑命令汇总就先介绍到这里了,更多Vim文件编辑命令和Vim相关操作可阅读本站其它文章内容。
9. linux之vi,vim命令
vim 是对 vi 的扩展,文中的很多操作是 vi 通用的
vi 是 区分大小写 的命令的,也就是说 g与G 是不同的命令
在不同模式下,快捷键是不一样的 模式分 一般模式 编辑模式 指令模式
一般模式用于文件内部操作,编辑模式用于输入编写等,指令模式用于对文本文件进行操作
下面的选项值不变,但却被禁用
绑定快捷键来激活 / 取消 paste 模式
出现粘贴换行符错位,设置一下 .vimrc
显示所有寄存器内容
原文链接:https://rumenz.com/rumenbiji/linux-vi-vim.html
10. vim中以g开头的命令是什么意思
2.4 'g' 开始的命令 *g*
标签 字符 备注 普通模式下的动作 ~
------------------------------------------------------------------------------
|g_CTRL-A| g CTRL-A 只有在编译时加入了 MEM_PROFILE 时才有定义:
转储内存内容
|g_CTRL-G| g CTRL-G 显示当前光标位置
|g_CTRL-H| g CTRL-H 启动选择列块模式
|g_CTRL-]| g CTRL-] |:tjump| 到光标所在的标签上
|g#| g# 1 类似于 "#",但不使用 "\<" 和 "\>"
|g$| g$ 1 'wrap' 关闭时转到当前行最右侧屏幕上可见的字
符
'wrap' 打开时转到当前屏幕行最右侧的字符
|g&| g& 2 在所有行上重复上次的 ":s"
|g'| g'{mark} 1 类似于 |'|,但不改变跳转表
|g`| g`{mark} 1 类似于 |`|,但不改表跳转表
|gstar| g* 1 类似于 "*",但不使用 "\<" 和 "\>"
|g0| g0 1 'wrap' 关闭时转到当前行最左侧屏幕上可见的字
符
'wrap' 打开时转到当前屏幕行最左侧的字符
|g8| g8 显示光标所在的 UTF-8 字符的十六进制字节码
|g<| g< 显示上次的命令输出
|g?| g? 2 Rot13 编码操作符
|g?g?| g?? 2 Rot13 编码当前行
|g?g?| g?g? 2 Rot13 编码当前行
|gD| gD 1 转到当前文件的光标所在单词的定义
|gE| gE 1 反向转移到上一个 WORD 的结尾处
|gH| gH 启动选择行模式
|gI| gI 2 类似于 "I",但总是从第一列开始
|gJ| gJ 2 连接行,不插入空格
|gP| ["x]gP 2 在光标签放置文本 [从寄存器 x] N 次,光标留
在插入文本之后
|gR| gR 2 进入虚拟替换模式
|gU| gU{motion} 2 使得 Nmove 文本全部大写
|gV| gV 在执行选择模式下的映射或者菜单时,不要重复
选择过去的可视区域
|g]| g] :tselect 到光标所在的标签上
|g^| g^ 1 'wrap' 关闭时转到当前行最左侧屏幕上可见的非
空白字符
'wrap' 打开时转到当前屏幕行最左侧的非空白字
符
|ga| ga 打印光标所在处的字符的 ascii 值
|gd| gd 1 转到当前函数里当前光标所在的单词的定义
|ge| ge 1 反向转到前一个单词的结尾处
|gf| gf 开始编辑当前光标所在的名字对应的文件
|gF| gF 开始编辑光标所在的文件名并跳转到文件名后的
行号上。
|gg| gg 1 光标移动到第 N 行,缺省是第一行
|gh| gh 开始选择模式
|gi| gi 2 类似于 "i",但先移动到 |'^| 位置标记
|gj| gj 1 类似于 "j",但 'wrap' 打开时往下 N 个屏幕行
|gk| gk 1 类似于 "k",但 'wrap' 打开时往上 N 个屏幕行
|gm| gm 1 转到屏幕行正中间的那个字符
|go| go 1 光标移动到缓冲区的第 N 个字节
|gp| ["x]gp 2 在光标后面放置文本 [从寄存器 x] N 次,光标
留在后面
|gq| gq{motion} 2 排版 Nmove 文本
|gr| gr{char} 2 虚拟替换 N 个字符为 {char}
|gs| gs 睡眠 N 秒 (缺省 1)
|gu| gu{motion} 2 使得 Nmove 文本全部小写
|gv| gv 重新选择上次的可视区域
|gw| gw{motion} 2 排版 Nmove 文本并保持光标位置
|netrw-gx| gx 执行光标下的文件名对应的应用程序 (仅限于
|netrw| 插件)
|g@| g@{motion} 调用 'operatorfunc'
|g~| g~{motion} 2 改变 Nmove 文本的大小写
|g<Down>| g<Down> 1 等同于 "gj"
|g<End>| g<End> 1 等同于 "g$"
|g<Home>| g<Home> 1 等同于 "g0"
|g<LeftMouse>| g<LeftMouse> 等同于 <C-LeftMouse>
g<MiddleMouse> 等同于 <C-MiddleMouse>
|g<RightMouse>| g<RightMouse> 等同于 <C-RightMouse>
|g<Up>| g<Up> 1 等同于 "gk"