linux vim使用笔记

vim编辑器很强大,熟练掌握对提升效率很有帮助。

最基本

别的不说,会这3个基本就能操作vim了。

i 插入(慢点没关系额,我就用光标移动和退格键,照样完成功能)
:wq 保存
:q! 不保存,强制退出

进阶

场景:删除4行内容,并插入复制的内容
难道还是按 i,然后退格删么?
当然不。
4dd | o | shift+insert ,完成。
解读:

4dd  光标处向下删除四行
o   光标处,向下插入空行
shift+insert  粘贴命令(shell界面中)

不小心搞错了怎办

改了半天,突然误删2行,怎办呢?
:q! 强制退出吗? 那之前改的都丢了。

莫要着急,一个 u 键搞定。
u键是单步撤销。 多按几次即可多步撤销。

分类

vim移动和定位

j 下
l 右
h 左
k 上
0,$  行首  0和g0的区别: g0是回到屏幕的行首,不算折行
^ 行尾
( 句首
) 句尾
{ 段首,向上找空行
} 段尾,向下找空行
gg 首行    2gg 第二行
G 尾行    2G 第2行
w 下个单词词首
W 下个长单词词首
b 上个单词词首
B 上个长单词词首
e 下个单词词尾
E 下个长单词词尾
ge 上个单词词尾
gE 上个个长单词词尾
| 第几列  一般是字符  N
f a 向前找某个字符 N
F a 向后找某个字符 N
t a 向前找某个字符之后的位置 N
T a 向后找某个字符之后的位置 N
; 重复之前的fFtT查找 N
, 反向重复之前的fFtT查找 N


ctrl+b  向上翻页
ctrl+f  向下翻页
ctrl+u  上翻半页
ctrl+d  下翻半页
ctrl+e  上翻一行
ctrl+y  下翻一行

vim插入

i 当前字符前插入      和y,c一起的时候表示符号内的所有内容
a 当前字符后插入      和y,c一起的时候表示整个单词
A 行首插入
I 行尾插入
o 向下插入新行
O 向上插入新行

复制,粘贴,剪切,删除

y 可视模式选中后按y  复制选中的内容
yy 复制当前行   2yy 复制2行  注:yy 没有2,4yy这样的语法
y+定位符 复制到某个位置  yw yb y0 y$  y2l(向右复制2个字符) y2j(向下复制2行,共3行)  y)不能用  y}(复制到段尾)
yaw 复制光标所在单词
p 当前位置后粘贴
P 光标前粘贴

删除

x
X
del
d
dd
D
J   合并行

其他

ctrl+] 查看光标处文档
ctrl+t 跳回

ctrl+w,w   切换窗口   :sp  水平切分窗格,  vsplit 垂直切分窗口    :q  关闭窗口
Normal mode command      (nothing)   :help x
Insert mode command	  i_	   :help i_<Esc>
Command-line command	  :	   :help :quit
Command-line editing	  c_	   :help c_<Del>
Vim command argument	  -	   :help -r
Option			  '	   :help 'textwidth'
s  删除n并插入       3s     感觉c和s很像啊  区别是什么呢??
R  替换模式
:3d5     从3行开始  删除5行
c  也是insert
cc 删除行  并开启插入
vi(vim)编辑器
vi删除命令:  d其实是剪切命令
dd删除当前行
d$删除到行尾
d^删除到行首
nd删除几行(从当前行开始)
dw删除光标之后的单词
db删除光标之前的单词
x向右删除一个字符           4x  删除多个
X向左删除一个字符           5X  删除多个
5x   删除5个字符
5X     删除5个字符
shell 经常卡死         ctrl+q解锁
:ls  查看vim当前打开的文件
ga  查看选中ascii码(注意,不用冒号)
*   搜索光标所在单词(不是字母)  向下搜索
#   搜索光标所在单词(不是字母)  向上搜索
g8  查看utf8码

vim缩进

> 右缩进
>> 右缩进
<< 左缩进
< 左缩进
4>> 多行缩进 (不要用visual-block模式)
=% 缩进括号内的内容
如果要首选多行缩进,也可以用visual模式

vim

:r c.txt       r和r!的区别是:   r后面接文件名   r!后面加命令
:r!date  执行命令并将结果插入到文件中     r是read
:r!ls   插入 目录文件列表到文件
:read  !ls   #和r !ls一样
G=gg  跳转到某行
gg  # 首行  2gg  表示跳转到第二行
G  # 尾行   2G 表示跳转到第二行
:%y  复制所有,只是在vim中复制,按p粘贴
:1,3y  多行复制
:r!date      插入日期
a,i,o:       a 当前字符后插入文本 ,i当前字符前插入文本,o 下一行添加文本,O 上一行添加文本
A,I,O          I 单词前插入   A  单词后插入  O  行前插入
ZZ  保存并退出,相当于wq  注意大写
less:
:read a3.txt   读取a3.txt内容并插入到当前文件
R   替换模式
guu   行小写
gUU   行大写
~  转换大小写
ga 查看字符ascii码
gu 查看字符utf8码
gf 查看引用的文件 例如在.sh文件中  source ./date.sh
- 上一行开头
+ 下一行开头
v 进入vi编辑器
h 显示帮助
:%s/\s+//g    替换空格为空     %s会匹配所有行
:%s/cccc//gn  vim 显示匹配的个数
u 是撤销
ctrl+r  撤销
g;  最近一次编辑的位置
set nu  或者set number        显示行号
set textwidth=10  #一行10个字符  多个单词才会换行
set nonu  或者 set nonumber     不显示行号
set ignorecase
set noignorecase
set list         显示不可见字符SDDDDDD  要隐藏的话使用  set nolist

vim

搜索: / 输入字符,enter   n向前 N 向后
?  输入字符,enter   n向后,N向前

开头输入内容: :s/^/sadfsafsa               s表示替换 %表示当前行
结尾输入内容: :s/$/adfadfasdf
全局查找替换: :%s/aaa/ccc/g     # 百分号是全局查找替换
当前行查找替换: :s/aaa/ccc/g
linux 总是在光标前插入  总是在光标前插入 linux 总是在光标前插入
shift +insert   开头插入
.  点号  重复上次操作
&  重复上次替换操作
@a 重复宏 @@  重复上次宏
:h . 查看.号的用法

vim

25s/ddd/ccc    25行  替换内容     语法为ns/ddd/ddd  n是第几行
1,10s/ddd/ccc/g  1-10行  替换内容       并不是从当前行开始  是绝对行数
%s/datetime/ccc/g     所有行替换内容
撤销  u    撤销的尽头是already at oldest change       是最老的版本
重做 ctrl+r     恢复的尽头是already at newest change    是最新的版本
:! 外部命令  执行结束之后,  再次按enter即可回到  vim
m,nw !cmd           如  1,2w ! echo
yum -y install vim-enhanced         vim扩展
:x 和 :wq     :x 在内容没有改变的情况下不会修改时间
vim使用鼠标:   :set mouse=a      a表示所有模式
永久使用鼠标:   用户目录下新建.vimrc  文件,输入 ::set mouse=a 保存
vim自定义tag长度: 编辑/etc/.vimrc 输入 set tabstop=4  并且 set shiftwidth=4

vim全选   ggVG   VG是大写  这个是全选  但是如何复制出来啊 ??
visual,visual-line,visual-block    v可以用光标选,V可以选行,ctrl+v可以选行和列
X(删除光标前,同backspace,backspace不能在普通模式下使用) x(删除光标所在位置,同delete)   删除单个字符
d和x和退格?       d是通用删除命令,最慢   x同delete      退格必须编辑模式才可以用
:e  a2.txt      vim中进入其他文件
:wq! a3.txt        另存为其他文件
:saveas new.txt    #另存为其他文件
p和P    p是光标后粘贴       P 光标前粘贴

vim宏定义

宏定义的例子:
qa   出现recording,表示开始录制宏,
按dd,再按dd    执行2次删除行的操作
q    退出宏,recording消失  表示录制完毕
然后  @a  可以发现删除了2行

vim多行插入

ctrl+v    # 块模式
10j       #向下选择10行
I       # 行前插入
--      # 插入2个--
esc    #多行插入

vim -c rm a2.txt a.txt

报错: Swap file “.aaa.sql.swp” already exists! [O]pen Read-Only, (E)dit anyway, ®ecover, (Q)uit, (A)bort:

删除swp即可: rm -rf .*.swp 或者rm -rf .*.*.swp 点号不能用*代替

vim寄存器 (小高端,有些难度,且用到的不多)

:reg 0     最近一次复制的内容
:reg 1     最近一次删除的内容
:reg 2     最近一次删除的内容
:reg *       查看所有寄存器    其实直接reg就行  \*(这里其实是*,但是md需要转义)好像不对
'"'2p      双引号+寄存器名+命令  是调用寄存器   调用寄存器  直接"2p
直接按p 调用最近删除的数据
pa  表示开始寄存器,再按p表示结束寄存器
@a    调用a寄存器(这是宏)
@@    调用上次寄存器(其实是宏)
ctrl+p 或者ctrl+n  自动提示(自动提示的时候是在输入的时候用到的)
自定义寄存器: "字母+  然后输入命令即可   如2dd ,yy等

创建寄存器:

"gdd  可以创建寄存器  后面一定要跟可以存到剪切板的命令   例如dd  yy是不可以的
调用自定义寄存器: 语法          "+字母+编
"ny   复制当前内容   n是字母
"nyy  复制当前行     n是字母
"np   复制名称为n的寄存器  n是字母
10yy  从当前行复制10行,然后按p在光标处粘贴
"a 和@a的区别  "a是获取寄存器的string内容,@a是执行寄存器的命令

只读寄存器:

":p   最近缓存的命令      是命令不是数据
".p   最后insert的文本
".%   文件的名字
".#   在会话中使用的名字

vim标记:

ma   标记当前位置为a(创建标记)  语法m+a
`a  或者 'a 都可以             调用标记  语法为   `+a
:marks   打印所有active marks,不知道这个active是什么意思

vim安装emmet插件:

cp plugin/emmet.vim ~/.vim/plugin/

vim分屏

上下分屏: split
左右分屏: vplit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值