假Vim 模式和命令

假Vim 模式下,主编辑器中的大多数按键都被截获并按照类似 Vim 的方式解释。大部分支持的操作可以跟随着移动命令,或者在可视模式下执行,或者与寄存器一起工作,或者可以前缀一个重复次数。

以下章节描述了在支持的模式下模拟的命令以及它们在功能上与 Vim 的差异

  • 普通模式
  • 可视模式
  • 命令行 (:)
  • 插入和替换

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

普通和可视模式

  • 基本移动,例如 h/j/k/l<C-U><C-D><C-F><C-B>ggG0^$
  • 单词移动,例如 web
  • 内部/a 移动,例如 ciw3daw,ya{
  • ft 移动
  • [ 和 \c ] 移动
  • { 和 } 段落移动
  • 带有寄存器的删除/更改/剪切/粘贴
  • 撤销和重做
  • <C-A><C-X> 以十进制、八进制或十六进制格式增加或减少数字(例如 128<C-A> 在或之前 "0x0ff" 更改为 "0x17f"
  • . 重复最后一个更改
  • /search?search*#nN - 大部分正则表达式语法在 Vim 中使用,除了 \<\> 在 QRegExp 中与 \b 相同
  • @q(宏录制和执行)特殊键保存为 <S-Left>
  • 标记
  • gv 移动到最后的可视选择;如果文本在其周围被编辑,则可能不同
  • 使用 =<<>> 进行缩进,带有移动、计数和视觉模式
  • 转换为大写/小写,例如 ~gUgu
  • iaoIAO 进入插入模式
  • 滚动窗口,如 ztzbzz
  • 换行移动,如 gjgkg0g^g$

命令行模式

  • :map:unmap:inoremap
  • :source 逐行源 vimrc 文件
  • :substitute 在范围内替换表达式
  • :'<,'>!cmd 通过外部命令过滤(例如,使用 :%!sort 对文件中的行进行排序)
  • :<range>sort[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
backspacebsindenteolstart
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

©2024 The Qt Company Ltd. 本文件中的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 以及相应的标志是 The Qt Company Ltd 在芬兰和其他国家和地区的商标。所有其他商标均为其各自所有者的财产。