admin管理员组文章数量:1122853
this is a markdown File to learn basical knowledge of vim
如果改变了文本需要对文本进行保存:w就行,不然就无法退出文件进行其他操作
对vim 进行分屏操作,在打开文件的时候 vim -on (默认上下分屏) file1name file2name
vim -On (左右分屏) filename1 file2name
在打开文件之后进行分屏操作
按下Ctrl+w 然后松开再按下s 就可以把当前焦点所在的屏幕上下(默认)切开 新开的屏幕上面是显示的还是当前的文件信息
按下Ctrl+w 然后松开再按下v 就可以把当前焦点所在的屏幕左右(不默认)切开 新开的屏幕上面显示的是当前的文件信息
在打开文件之后通过命令进行分屏操作
在normal模式下:sp filename 会上下分割当前焦点所在的屏幕,并在焦点所在的屏幕打开新打开的文件
在normal模式下:vsp filename 会左右分割当前焦点所在的屏幕,并在焦点所在的屏幕打开新的文件
在打开的分屏之间进行切换
在normal 模式下 按住 Ctrl+w 然后按下h,j,k,l 当前的光标会向左,向下,向上,向右移动,实现多屏操作
如何对分屏进行移动
在normal 模式下 按住 Ctrl+w 然后 按下 H,J,K,L 将当前屏幕向左,向下,向上,向右移动,实现对分屏的排序
如何关闭多个分屏呢
在normal 模式下 按住 Ctrl +w 然后 按下 c(cancel)退出当前的分屏
在normal 模式下 按住 Ctrl +w 然后 按下 q (quit) 也会退出当前分屏,如果这是最后一个分屏的话那么还会退出vim
如何退出vim呢(vim 很好用 但是退出太麻烦了,每次退出都要长按关机键)
- :w 保存文件但是不退出文件
- :w! 强制保存但是不退出文件
- :w filepath 保存当前文件修改到指定的文件当中
- :q 退出文件,对文件的修改不做保存
- :q! 强制退出文件,对文件的修改不做保存
- :qa! 强制退出所有的文件,对所有的文件修改都不做保存
- :wq 保存文件并退出
- :wq! 强制保存文件并退出
- :x 退出文件并保存对文件的修改同(:wq)
- :e filepath 打开另一个文件
- :e 放弃对文件的所有修改 恢复文件到上次保存的位置
关于从normal modal 进入 insert 模式
- i 在光标前插入 I 在光标所在行的行首插入
- a 在光标后插入 A 在光标所在行的行尾插入
- o 在光标所在的下一行行首插入文本(相当于在下一行新开的一行)
- O 在光标所在的上一行行首插入文本 (相当于在上一行新开了一行)
- s 删除光标所在的字符然后插入需要录入的文本 S 删除光标所在的行并在当前行的行首插入需要录入的文本
- cw 删除从光标处开始到该单词结束的所有字符,然后插入需要的文本
- this is magic thing
关于行号
- 在normal 模式下 :set nu 显示文件的行号
- 在normal 模式下 :set nonu 取消显示行号
关于定位以及快速的移动光标
#### 当前行移动光标
- 0 移动到行头
- ^ 移动到行首第一个不是空字符串的的字符
- $ 移动到行尾
- g_移动到行尾 并且不是空字符串的字符
- w 移动到下一个单词的开头
- e 移动到下一个单词的结尾
- fa 移动到下一个为a 的字符处,fb 移动到下一个为b 的字符处(在同一行)
- nfa 移动到本行光标处开始的第n个字符为a的地方 (n为1,2,3)
- Fa 同fa (但是方向相反) 移动到上一个字符为a的字符处(在同一行)
- nFa 同nfa (但是方向相反)移动到上n个字符为a 的字符处(在同一行)
- ta 移动光标到a字符的前一个字符(在同一行)
- nta 移动光标到第二个啊字符的前一个字符(在同一行)
- Ta 移动光标到第一个a字符的后一个字符(在同一行)这个第一个是从右往左数的第一个
- nTa 移动光标到第n个a字符的后一个字符 (在同一行)这个第一个是从右往左数的第n个
- 当使用T,t,F,f在行内跳转的时候 使用, 跳转到上一使用快捷跳转的位置,使用;快捷条状到下一次使用快捷跳转的位置
#### 跨行移动光标
- nG 光标定位到第n行的行首
- gg 光标定位到第一行的行收
- G 光标定位到最后一行的行首
- M 光标定位到当前屏幕的中间
- L 光标定位到当前屏幕的尾部
- zt 把当前行移动到当前屏幕的最上方 ,也就是第一行:(实际的情况更像是将当前的编辑页面向上滑动了一段距离一样)
- zz 把当前行移动到当前屏幕的中间
- zb 把当前行移动到当前屏幕的尾部
- %(5) 匹配括号移动 包括{[( 需要把光标移动到括号上a]})
- * 和# 匹配当前光标所在的单词,移动光标到下一个相同的单词(*)或者是上一个相同的单词(#)
如何进行翻页操作
- 在normal模式 按下Ctrl+f 查看下一页内容
- 在normal模式下 按下Ctrl+ b查看上一页内容
最重要的复制,粘贴,删除功能
#### 最重要的三个键 y p d 分别对应 复制 粘贴 删除
d(delete) 通常搭配一个字符(删除范围)
- dw 删除一个单词
- dnw 删除n个单词
- dfa 删除光标处到下一个a字符的所有字符(fa 定位到光标到a处)
- dnfa 删除光标处到下n个a字符的所有字符 (nfa 定位到下n个a处)
- dd 删除一整行
- d$ 删除光标处到本行的结尾
- dH 删除屏幕显示的第一行文本到光标所在的行
- dG 删除光标所在行到文本的结束
y(copy)是复制的意思 通常搭配一个字符(复制范围) 实现复制的功能 常用的如下
- yw 复制一个单词
- ynw 复制n个单词
- yy 复制整行
- nyy 复制n行
- y$ 复制光标处到本行的结尾
- yH 复制屏幕显示的第一行文本到光标所在的行
- yG 复制光标所在的行到文本的结束
p (paste) 粘贴的意思当执行完复制或者删除操作的时候 ,vim 会把文本寄存起来 方便粘贴
- p 在光标之后粘贴
- P 在光标之前粘贴
撤销操作和恢复
- u 撤销刚才的操作
- Ctrl+r 恢复撤销的操作
删除字符操作和替换
- x 删除光标当前所在的字符
- r 替换掉光标当前所在的字符
- R 替换掉从光标开始后的所有字符 除非 <ESC> 退出 或者jj (代替<ESC>)退出
大小写转换
- ~ 价格光标下的字母改变大小写
- 3~ 将光标位置开始的三个字母改变其大小写
- g~~ 改变当前行字母的大小写
- gUU 将当前行的字母改成大写
- guu 将当前行的字母改成小写
vim的重复命令
- n<Command> 重复n遍command命令
vim 的可视化模式(Visual-mode)
- normal 模式下 按住v 或者 V 或者 Ctrl+v
- v (字符可视化) VISUAL 操作hjkl 就可以选中文本进行操作
- V (行可视化) VISUAL LINE 操作 jk 上下移动
- Ctrl+v(块可视化) VISUALBLOCK 可以通过hjkl 选择块状的操作区域 ,再次按住Ctrl+v 退出可视化模式
vim 的可视化模式的特殊操作
- 当操作的操作在 "" ,'',(),{} (双引号,单引号,小括号,大括号,中括号)里面的时候 通过va" 选中""以及在"" 之间的内同,vi",选中"" 里面的所有内容 在normal 模式下按va就行了 不用进入了可视化模式再按va
- [ this is some test text]
vim 的代码提示功能
- 在insert 模式下的时候按下 Ctrl+n 或者是Ctrl+p 会有代码提示的功能,我们可以实现快速录入的效果
我在全局的.vimrc 里面设置了 inoremap jj 用敲击两下j的操作来实现按下键的操作 这样效率又提升了很多
vim 的宏录制功能
- 录制:
在normal中按下q 然后开始宏录制功能 再按下任意一个字符记录这个宏录制的名字,然后执行所需要用到的操作,操作完之后 再次按q 结束宏录制
- 使用:
在normal模式下按住@+宏录制的名字 (@a)应用宏录制下来的操作
vim 进行查找
- 在normal模式下 输入/{目标字符串}查询 查询到了以后按下n 跳到下一个,按下N 跳到上一个匹配的字符
vim 处理大小写的区分
- :set ic 编辑器将不会区分大小写 (因为unix 默认是对大小写敏感的所以这里设置不区分大小写的话,那么需要单独设置)
- :set noic 编辑器将区分大小写
vim 删除多行文本
- :n1,n2d
- n1,n2 指的是起始行号和结束行号,d是删除关键字(但是更推荐使用VISUAL模式删除文本,因为这样可以更好的明白自己到底删除了哪些内容)
vim 处理文本的替换
- 基本的格式 :{作用范围}s${替换前的字符串}/{替换后的字符串}/{替换的标志} (如果不指定替换的标志的话那么只会替换查找到的第一个单词)
例子:把当前行的 aa 全部替换成 handsome :s/aa/handsome/g
把全文中的aa 全部替换成 handsome :%s/aa/handsome/g
把第5行到第10行的 aa 全部替换成handsome :5.10s/aa/handsome/g
区分大小写的替换(默认),不区分大小写的替换::s/aa/handsome/gi
需要确认的替换
- 在VISUAL Mode 下 输入: vim 会自动补全为 :’<,>’
- 然后输入替换的命令就行了 s/aa/handsome/g 就会把当前选区里面aa全部替换成handsome
vim 执行linux命令
- :!command 执行linux 命令
- :r !command 执行linux命令 并且添加操作文本到光标处(我迫不及待的想去尝试一下yes命令)
在vim里面定义缩写
- :ab {缩写的单词} {需要被缩写的单词通常是很长的单词}
- :abbreviate 查看并列出 所有定义的缩写
- :unabbreviate 清除某一个缩写的映射
- :abclear 清除所有定义的缩写
在vim 里面定义快捷键
:map ^M I#<Esc>
上面的例子也就是通过快捷键 Ctrl + m 在文件光标处所在行的行首插入 # ( # 代表注释)。
: 后面的 map 是关键字 ,后面是 key 和 value 。
key 对应的是 ^M , 这个 key 需要强调一下 ^M 是 Ctrl + v + m 打出来的(按下这三个键,VIM 会显示成 ^M ),^M 代表快捷键是Ctrl + m , Ctrl + v + n 就是 ^N ,代表快捷键是 Ctrl + n 。
Ctrl + v + x 就是 ^X (这里的 x 是代表 26 个字母中的任意一个) 代表快捷键 Ctrl + x。
value 对应的是 I#<ESC>,表示按下快捷键以后执行的相应操作,I 是切换光标至行首并切换到编辑模式,#是行首输入的内容( # 是VIM 文件中的注释符号 ),<ESC> 是退出编辑模式。
删除换行符
在normal 模式下的 按下J 然后就会删除当前行到下一行的换行符
在normal模式下 在命令行里面用替换命令替换换行符为空 例如 :s/\n//g 删除当前行的换行符
在normal模式下 使用命令行删除文章中所有的换行符 例如 :%s/\n//g 删除整个文件里面的换行符
在VISIAL模式下 在命令行里面使用替换命令替换换行符为空 例如 :'<,‘>s/\n//g 删除VISUAL 选中的 换行符
测试一下 this is aa 然后又是一个aa 我现在要把所有的aa 替换成 hand—some
更新一下代码测试emoji的威力
版权声明:本文标题:关于vim常用操作 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1724510542a890428.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论