FakeVim 的模式与命令
在FakeVim 模式下,主编辑器中的大多数按键操作会被拦截,并以类似于Vim的方式进行解释。大多数受支持的命令可以在其后跟一个移动命令或在可视模式下执行,或者与寄存器配合使用,或者可以在命令前加上重复次数。
以下各节将介绍在支持的模式中模拟的命令,以及它们在功能上与Vim的差异:
- Normal
- 可视
- 命令行 (:)
- 插入和替换
有关使用 Vim 的更多信息,请参阅 Vim 网站上的Vim 文档。
普通模式和可视模式
- 基本移动,例如
h/j/k/l、<C-U>、<C-D>、<C-F>、<C-B>、gg、G、0、^、$ - 词的移动,例如
w,e,b - “Inner/a”运动,例如
ciw、3daw、 ya{ f以及t变体[ and \c ]移动- { 和 } 段落移动
- 使用寄存器进行删除/修改/复制/粘贴
- 撤销和重做
<C-A>以及<C-X>增加或减少十进制、八进制或十六进制格式的数字(例如,在"0x0ff"之前输入128<C-A>,会将其更改为"0x17f").重复上一次修改/search、?search、*、#、n、N——Vim 中使用了大部分正则表达式语法,但\<和\>与 QRegExp 中的\b相同@此外,q(宏录制与执行)的专用键被保存为<S-Left>- 标记
gv跳转至最后一个可视选择区域;若其周围文本被编辑过,结果可能有所不同- 使用
=、<<、>>进行缩进,支持移动、计数以及在可视模式下操作 - 至大写/小写,例如
~、gU、gu i,a,o,I,A,以及O进入插入模式- 滚动窗口,例如
zt、zb、zz - 行环绕移动,例如
gj、gk、g0、g^,g$
命令行模式
:map、:unmap、:inoremap等:source逐行解析 vimrc 文件:substitute在指定范围内替换表达式:'<,'>!cmd通过外部命令进行过滤(例如,使用:%!sort对文件中的行进行排序):<range>sor[t][!]:.!cmd插入外部命令的标准输出:read:yank,:delete,:change:move,:join:20跳转到某个地址:history:registers,:display:nohlsearch:undo,:redo:normal:<,:>set formatoptions=,请参阅 Vim 文档中的“:h fo-table”。当前支持的字母:fo-j
插入模式
<C-O>执行单条命令并返回插入模式<C-V>插入一个原始字符<insert>切换替换模式
选项
使用 `:set ... ` 设置下表中列出的选项:
| 长名称 | 简写名称 | 参数 |
|---|---|---|
autoindent | ai | |
backspace | bs | indent,eol,start |
blinkingcursor | bc | |
clipboard | cb | |
expandtab | et | |
hlsearch | hls | |
ignorecase | ic | |
incsearch | is | |
iskeyword | isk | 以下字符的组合:@ 、48-57 、_ 、192-255 、a-z 、A-Z |
relativenumber | rnu | |
scrolloff | so | |
shiftwidth | sw | |
showcmd | sc | |
smartcase | scs | |
smartindent | si | |
smarttab | sta | |
startofline | sol | |
tabstop | ts | |
tildeop | top | |
usecoresearch | ucs | |
wrapscan | ws |
Vimrc 示例
" highlight matched set hlsearch " case insensitive search set ignorecase set smartcase " search while typing set incsearch " wrap-around when searching set wrapscan " show pressed keys in lower right corner set showcmd " tab -> spaces set expandtab set tabstop=4 set shiftwidth=4 " keep a 5 line buffer for the cursor from top/bottom of window set scrolloff=5 " X11 clipboard set clipboard=unnamed " use ~ with movement set tildeop " mappings nnoremap ; : inoremap jj <Esc> " clear highlighted search term on space noremap <silent> <Space> :nohls<CR> " reselect visual block after indent vnoremap < <gv vnoremap > >gv " MOVE LINE/BLOCK nnoremap <C-S-J> :m+<CR>== nnoremap <C-S-K> :m-2<CR>== inoremap <C-S-J> <Esc>:m+<CR>==gi inoremap <C-S-K> <Esc>:m-2<CR>==gi vnoremap <C-S-J> :m'>+<CR>gv=gv vnoremap <C-S-K> :m-2<CR>gv=gv
另请参阅 “像在 Vim 中那样编辑”和“FakeVim”。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.