本页内容

FakeVim 的模式与命令

FakeVim 模式下,主编辑器中的大多数按键操作会被拦截,并以类似于Vim的方式进行解释。大多数受支持的命令可以在其后跟一个移动命令或在可视模式下执行,或者与寄存器配合使用,或者可以在命令前加上重复次数。

以下各节将介绍在支持的模式中模拟的命令,以及它们在功能上与Vim的差异:

  • Normal
  • 可视
  • 命令行 (:)
  • 插入和替换

有关使用 Vim 的更多信息,请参阅 Vim 网站上的Vim 文档

普通模式和可视模式

  • 基本移动,例如h/j/k/l<C-U><C-D><C-F><C-B>ggG0^$
  • 词的移动,例如w,e,b
  • “Inner/a”运动,例如ciw3daw 、 ya{
  • f 以及t 变体
  • [ and \c ] 移动
  • { 和 } 段落移动
  • 使用寄存器进行删除/修改/复制/粘贴
  • 撤销和重做
  • <C-A> 以及<C-X> 增加或减少十进制、八进制或十六进制格式的数字(例如,在"0x0ff" 之前输入128<C-A> ,会将其更改为"0x17f"
  • . 重复上一次修改
  • /search?search*#nN ——Vim 中使用了大部分正则表达式语法,但\<\> 与 QRegExp 中的\b 相同
  • @ 此外,q (宏录制与执行)的专用键被保存为<S-Left>
  • 标记
  • gv 跳转至最后一个可视选择区域;若其周围文本被编辑过,结果可能有所不同
  • 使用=<<>> 进行缩进,支持移动、计数以及在可视模式下操作
  • 至大写/小写,例如~gUgu
  • iaoIA ,以及O 进入插入模式
  • 滚动窗口,例如ztzbzz
  • 行环绕移动,例如gjgkg0g^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 ... ` 设置下表中列出的选项:

长名称简写名称参数
autoindentai
backspacebsindent,eol,start
blinkingcursorbc
clipboardcb
expandtabet
hlsearchhls
ignorecaseic
incsearchis
iskeywordisk以下字符的组合:@48-57_192-255a-zA-Z
relativenumberrnu
scrolloffso
shiftwidthsw
showcmdsc
smartcasescs
smartindentsi
smarttabsta
startoflinesol
tabstopts
tildeoptop
usecoresearchucs
wrapscanws

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.