NOTE-vim
NOTE - vim Editor basic operation
basic
工作模式 :
command mode : Esc, 任何输入都为命令
insert mode : 快捷键均无效,仅可编辑文件
i : 从光标以左插入
a : 从光标以右插入 可在行尾字符和换行符之间插入
Shift + a : 跳转到本行末尾插入字符
o : 在本行之下开辟一行插入字符
Shift + o : 在本行之上开辟一行插入字符
command-line mode : command mode + : 输入命令
Ex mode : command mode + Q : 输入多行命令. 此模式下输入visual回到normal mode
visual mode : v
visual-block mode : <Ctrl - q>
visual-line mode : Shift +v
select mode : gh 相当于word中选中内容,再键入内容将直接替换
打开文件 :
vi DIR or vim DIR
若DIR不存在,则编辑新文件 ; 若DIR存在,则编辑已有文件
方向操作hjkl
h:left l:right j:down k:up (in command mode)
<number><direction>:往direction移动number个字符/行
.vim/vimrc configuration
path : ~/.vim/vimrc
syntax on/off : 开启/关闭高亮
set [no][function] : 开启funtion,在function前接上no则为禁用该function
map [A] [B] : 将A映射到B
noremap [A] [B] : 将A映射到B
inoremap [A] [B] : 仅在insert mode生效的noremap
vnoremap [A] [B] : 仅在visual mode生效的noremap
nnoremap [A] [B] : 仅在normal mode生效的noremap
let mapleader="[A]" : 定义LEADER键
部分常用function
number : 显示行号
relativenumber : 显示相对行号
cursorline : 光标所在行显示下划线
wrap : 自动换行使一行不超出窗口范围
wildmenu : command line mode下按Tab显示当前可用的命令. **此时若进行命令选择只能用方向键,hjkl不可用
hlsearch : 搜索内容高亮
incsearch : 动态高亮搜索内容
ignorecase : 忽略大小写搜索
smartcase : 智能决定是否忽略大小写,适用于ABC与AbC这种大小写混合字符的精准搜索
map & noremap区别 :
map : 递归地映射
noremap : 不递归地映射
for example :
map a b
map b c
'a' → 'c'
noremap a b
noremap b c
'a' → 'b'
一些motion(如果没有与其他键位冲突时在command mode下可以独立使用)
w : 将光标左侧移动到下一个词的开头
搭配c即删除从光标左侧开始的所在词语的全部内容. 注意:任何语言的词语定义为符号之间的全部内容(空格算内容不算符号),若光标左侧不在单词左侧,则删除不完整.
b : 将光标左侧移动到本词的开头或者上一个词的开头
i : 在...中, 搭配w使用(ciw)则实现光标在词语里面时删除本词语全部内容
G : 光标移动至最后一行
gg : 光标移动到第一行
分屏
分屏方向
:split 上下分屏
:vsplit 左右分屏
:q 退出分屏
:set splitright<CR>:vsplit<CR> 向右分屏
:set nosplitright<CR>:vsplit<CR> 向左分屏
:set splitbelow<CR>:split<CR> 向下分屏
:set nosplitbelow<CR>:split<CR> 向上分屏
<Ctrl - w> + h/j/k/l 光标移动至对应分屏
打开文件
:e FILEPATH or :edit FILEPATH 打开新文件
更改分屏
:res +/- [number] 更改光标所在的上下分屏上下大小
:vertical resize +/- [number] 更改光标所在的左右分屏大小
<Ctrl - w>t<Ctrl - w>H 上下分屏改左右分屏
<Ctrl - w>t<Ctrl - w>K 左右分屏改上下分屏
标签页
:tabe 打开新标签页
:q 关闭此标签页
:-tabnext 移至左标签页
:+tabnext 移至右标签页
visual mode
所有visual模式下:
选中后,键入:normal [command] 将会对选中内容在normal模式下批量应用[command]内容
visual-block mode :
选中后,键入I,再输入内容后Esc,会在选中内容之前同意插入键入内容
command
format of command : <operation><motion>
x : 删除光标所选字符
d : 剪切
d<number><direction> 此处direction为方向键的上下左右,下面用<left/right/up/down>表示
选取范围
在direction为left/right时,光标起始位置相当于块状光标左边边缘
在direction为up/down时,选取范围为本行加上上下 <number>行
即 : 假设<>为块状光标覆盖位置,|为Windows下常见的编辑光标
e.g.
d5<left> : 剪切光标左边5个字符
d1<up> : 剪切本行及上一行
d<up> : 等同d1<up>
dd : 剪切本行
p : 粘贴
粘贴行时,VIM会在光标所在行下一行(无则新建)进行粘贴
粘贴所选内容且内容非整行复制或剪切时,从光标右侧边缘开始粘贴
y : 复制
选取范围与d相同
c : 替换
选取范围与d相同
删除选取范围内字符并进入insert mode
i : 在...中
搭配w使用(ciw)则实现光标在词语里面时删除本词语全部内容
搭配指定符号实现删除符号之间全部内容
e.g. original text : "text1 text7 [text2 text3] <text4 text5> text6"
"text1| text7 [text2 text3] <text4 text5> text6" ci" →""
"text1 text7 [text2 t|ext3] <text4 text5> text6" ci[ or ci] → "text1 text7 [] <text4 text5> text6"
"text1 text7 [text2 text3] <text4 |text5> text6" ci< or ci> → "text1 text7 [text2 text3] <> text6"
f : 查找
f<character> : 光标左侧移动到<character>所在位置, 配合d y c则为从光标字符开始选取至下一处<character>(包含)再执行dyc对应操作
/ : 查找
command mode下使用
n : 下一处内容
N : 上一处内容
zz : 光标位置变为窗口中心
插件
VIM Plugin Manager
https://github.com/junegunn/vim-plug
安装插件
vimrc configuration:
call plug#begin()
Plug 'plugin1'
Plug 'plugin2'
...
call plug#end()
reload vimrc and :PlugInstall

浙公网安备 33010602011771号