admin管理员组

文章数量:1530020

Vimrc 文件
  • rc: run command
  • 系统级 Vimrc
  • 用户级 Vimrc
  • 命令模式查看帮助
    • :h vimrc
    • :help vimrc
    • :version
  • 编辑
    • vim ~/.vimrc
      +:e ~/.vimrc
  • 注释:"
# vimrc 文件
set history=1000
set ruler
set hlsearch

set noincsearch
set ignorecase
set autoindex
set smartindex  自动识别语言中的缩进
set expandtab

map <F3> i<ul><CR><Space><Space><li></li><CR><Esc>I</ul><Esc>kcit
map <F4> <Esc>i<li></li><Esc>cit
# 命令模式
/set
set hls?

:set number
:set number?
:set nonumber

:let mapleader=","

:map <leader>w :w!<cr>
Vim 四种模式
  • 普通
  • 可视
  • 插入
  • 命令

:h vim-modes-intro

移动、跳转与缩进


Vim 最初的作者 Bill Joy 使用的机器 ADM-3A 终端机

光标移动
按键含义
h左移
l右移
j下移
k上移
^/0移动到行首/包含缩进空格
$移动到行尾巴
单词和字符串移动
w/W正向移动到下一个单词开头(W 不包含特殊字符)
b/B反向移动
e/E正向移动下一单词结尾
ge反向

跳转
Ctrl+f/F下一页
Ctrl+b/B上一页
Ctrl+d/u向下/上翻半页
gg跳转到文件首行
gg/G跳转到指定行
G跳转到文件最后一行
{g}+Ctrl+g/G查看文件信息/{g}更加详细
缩进
>> / :>右缩进
m,n> / :m>(n-m+1)m 到 n 行缩进
m>n 等价于命令 :m,m+n-1>m 行开始共n行缩进一次
删除、复制与粘贴
寄存器
类型含义表示方式举例特点
无名寄存器默认寄存器“”“” p=p会被最后一条覆盖
数字寄存器"+{0~9}缓存最近10次操作“0,”{1~9}"0P,"1P0用于复制专用,1~9用于最近9次行删除或修改记录
有名寄存器26英文字母命名有名寄存器"[az]/[AZ]"ayw“A会通过^J追加到” a寄存器中
黑洞寄存器有去无回"_"_dw只想删除而不想覆盖无名寄存器
基础操作
按键操作定义
d=delete=cut剪切
y=yank~copy类似于复制
p/P=put~paste粘贴到光标后/光标前
u=undo撤销之前操作
Ctrl+r=redo重做/恢复之前操作
yw复制当前光标单词
y2w复制正向两个单词
p/P=put~paste粘贴到光标后/光标前
yy类似于dd复制当前光标整行

:reg

:registers

:h reg

调换字符
按键操作缓冲区内容
{start}Practica lvim
F{space}Practica lvim
xPracticalvim
pPractical vim
行剪切粘贴
按键操作缓冲区内容
{start}Line1
Line2
ddLine2
pLine2
Line1
组合删除 [count]operation([count]{motion})
x/X删除光标下/前单个字符
dw删除一个单词(必须在词首)
d{hjk}删除到上下左右一个操作前的字符
d$=D删除光标到行尾的字符
d^删除光标到行首的字符
dd删除当前整行
{n}dd向下删除n行(包括当前行)
5dw删除正向单词五次
3w正向移动单词三次
D3w正向删除3w动作
2d3w正向删除3w动作两次
修改、查找与替换
插入
按键操作定义
Shift+i/A插入模式并移动到行首/尾
a/i光标后/前插入
[n]O/o行前/后插入n次
[n]+i插入模式重复n次
转换
按键操作定义
~单个字符大小写转换
g~w单词大小写转换
g$/g~整行大小写转换
gU/uw单词转换成大/小写
查找
按键操作定义
F/f{char}反向/正向查找单个字符
t{char}查找字符前一个字符
dt{char}/df{space}删除光标到查找字符间字符
/{char}命令行查找
替换

语法:[range]s[ubtitute]/{pattern}/{string}/[flags]

按键操作定义
s/going/rolling/g当前行所有going替换成rolling
%s/going/rolling/g%匹配所有范围
Shift+r/R替换模式
r单个字符替换
cw修改单个单词
c$/C类似于d操作符修改光标之后内内容
缓冲区与多文件编辑
  • 缓冲区
  • 标签
  • 窗口
缓冲列列表

:files

:buffers

:ls

1#/%aBuf-ant.txt第一行
缓冲区指示状态文件名光标位置
缓冲区列表指示状态
标记含义
a激活缓冲区,缓冲区被加载且显示
h隐藏缓冲区,缓冲区被加载但不显示
%当前缓冲区
#交换缓冲区
=只读缓冲区
+已经更改缓冲区
-不可改缓冲区,‘modifiable’ 选项不置位
缓冲区列表操作
指令含义
:bp[revious]上一个缓冲区
:pn[ext]下一个缓冲区
:bf[irst]到第一个缓冲区
:bl[ast]到最后一个缓冲区
:buffer Number/FileName指定缓冲区
:ball编辑所有缓冲区
Ctrl+^/b#切换到前一个buffer(交换buffer)
:qall!退出全部缓冲区
:wall!写入全部缓冲区
:badd添加一个新缓冲区,但不设置为当前缓冲区
:bd[elete]删除缓冲区
:n,m/%bd删除n到m编号/所有的缓冲区文件
:bufdo {CMD}bufdo set number
:E /:bd打开文件目录列表/返回到最初buffer
多窗口操作(分屏)与标签分组
分屏
指令含义
Vim -O/on水平/垂直分屏 n数字 o为Open
Ctrl+w c/q关闭当前窗口/最后一个窗口时退
Ctrl+w s上下分割当前打开的文件
:sp fileName上下分割,并打开一个新的文件
Ctrl+w v左右分割当前打开的文件
:vsp fileName左右分割,并打开一个新的文件
移动分屏和尺寸变动
指令含义
Ctrl+w K向上移动
Ctrl+w J向下移动
Ctrl+w L向右移动
Ctrl+w H向左移动
Ctrl+w +增加高度
Ctrl+w -减少高度
Ctrl+w =让所有屏的高度一致
标签操作
指令含义
:tabnew新建标签页
:tabfind查找并在新标签页中打开文件
:tabs显示已打开标签页的列表
:tabclose关闭当前标签页
:tabonly仅保留当前标签页打开
:tabn/p/first/last移动到下/上/第一/最后一个标签页
:tabm将当前标签页放置到指定位置
标签操作和命令键
指令含义
gt/T移动到下/上一个标签
{i}gt移动到i位置的标签
noremap :tabnextVimrc 中自定义快捷键
noremap :tabpreviousVimrc 中自定义快捷键
:tabe编辑标签中的某个文件
:tabm 0/:tabm移动当前tab到第一个/最后一个
:tabm {i}移动当前tab到i+1位置
文本对象和宏
文本对象

{operator}{a}{object}

{operator}{i}{object}

例:daw = Delete A Word

  • ==a== n object 包含尾部间隔空格
Word/Sentence/Paragraph
textobject说明
wword
ssentence
pparagraph
块对象
textobject说明
]/[[]block
)/(、bblock
>/<、>/<<>block
}/{、BBlock
ttag block: <> </>
Visual mode
指令说明
viw选中单词
vis选中句子
vip选中段落
vi(选中圆括号中内容
vi[选中中括号中内容
vit选中标签中的内容
v2i{选中两层大括号之间的所有内容,数字限定选择的嵌套层数
v3aw选择三个单词(包含中间的2个间隔空格)
v3iw选择三个单词+间隔空格
可将v选择操作指令替换为c、x、d、y等操作符(operator),来针对文本对象操作

:h operator

宏:用来解决重复的问题
简单操作
指令说明
qa开始录制宏到寄存器a中
qA追加宏在a寄存器中追加
n@a执行n遍a寄存器中的操作
@@再执行一遍上一次操作
:n,mnormal @an到m行执行寄存器a宏操作
:let @a= ’编辑宏a寄存器
q退出宏录制
宏最佳操作
  • 规范光标位置:0
  • 执行编辑和操作
  • 移动光标到容易回放的位置:j
宏保存
  • viminfo / vimrc file
  • 保存历史和非空寄存器
  • vim 启动时读取
  • 容易被覆盖
Visual 模式
定义:在可视化模式化,可以对一个文本块的整体进行操作
三种子模式
v激活面向字符的可视模式
V / shift+v激活面向行的可视模式
Ctrl+v激活面向列块的可视模式
可视化模式操作
操作符说明
gv重选上次的高亮选区
o切换选取边界
Vim 总结
  • Vim 模式
  • Vim 组合
  • Vim 配置多样性
  • Vim 视图多样性
参考
  • 优雅玩转Vim
    https://www.imooc/learn/1049
编辑记录

创建 2019-02-23 12:50:00 周六

本文标签: 笔记vimII