ideavim与vim相关笔记

本文主要用于记录一些使用 vim/ideavim 开发的心得笔记,为了速度也为了折腾 强烈的个人向

笔记

ideavim 与 vim 混杂,无序但使用二级标题做大分类,当字典用,默认 vim 和 ideavim 通用,不通用会标记出来

文件操作

刷新重载当前打开的文件 :e/:e!

范围操作

某些普通模式的动作命令后面可以追加一些表示范围的指令,表示该动作将作用在整个范围上。这类命令常用的有:

  • d<范围> - 删除一定范围内的文本

  • c<范围> - 删除一定范围内的文本并进入插入模式

  • y<范围> - 将范围内的文本放入 0 号和"号注册栏

  • v<范围> - 选择范围内的文本

  • =<范围> - 自动缩进范围内的文本

  • gU<范围> - 将范围内的字符转换为大写

  • gu<范围> - 将范围内的字符转换为小写

  • <范围> - 将范围中的内容缩进一格

  • <<范围> - 将范围中的内容取消缩进一格

常用的范围指令有:

空格 - 光标所在位置字符。(例如 gU 空格 - 将光标位置字符转为大写)

重复某些动作命令 - 光标所在行。 (例如 dd 删除一行,yy 复制一行,cc 删除一行文本并开始插入,>> 当前行缩进一格,==自动缩进当前行)

$ - 从光标位置到行尾

^ - 从光标位置到行首,不包含缩进空白

0 - 从光标位置到行首,包含缩进空白

gg - 从光标位置到文件开头

G - 从光标位置到文件结尾

% - 从光标位置到另一边匹配的括号

f<字符> - 从光标位置到光标右边某个字符首次出现的位置,包括该字符

F<字符> - 从光标位置到光标左边某个字符首次出现的位置,包括该字符

t<字符> - 从光标位置到光标右边某个字符首次出现的位置,包括该字符

F<字符> - 从光标位置到光标左边某个字符首次出现的位置,包括该字符

/正则表达式 - 从光标位置到下一个匹配正则表达式的位置(跨行)

?正则表达式 - 从光标位置到上一个匹配正则表达式的位置(跨行)

aw - 一个单词加一个空格 (a 可理解为"一个",下同)

iw - 一个单词 (i 可理解为 in,下同)

a" - 一个字符串包括双引号

i" - 一个字符串内部文本

a< - 一组< >包含的文本,包括< >号本身

同理类推: i<, a[, i[, a(, i(

注意:真正 vim 中的 it 范围(一对 xml 标签内部)在 ideaVim 中不生效。

复制粘贴

用 y 命令将文本存入寄存器后,如果想在别处替换原有内容,可以先用 v 命令选中原有内容,然后用 p 命令粘贴。但第一次粘贴后,默认的寄存器"将被替换为刚刚删除的内容。如果要再次粘贴之前复制的内容,需要使用 "0p 命令组合来复制。也可以进入插入模式后用 Ctrl+r 0 来复制,例如 ciw<Ctrl+r>0 命令组合将用粘贴内容替换光标处的一个单词,并停留在插入模式。

重复操作

普通模式下按. (小数点)可重复上一次的修改操作 & - 重复上一次的:s 替换命令 @@ - 重复上一次执行的宏

vim 配置

text 复制代码
execute pathogen#infect() call vundle#begin() call vundle#end() syntax on
execute pathogen#infect()
call vundle#begin()
call vundle#end()
syntax on
" 横竖高亮
set cursorcolumn
set cursorline
filetype plugin indent on
set encoding=utf8
set nu
set rnu
set ruler
set t_Co=256
set cindent
set laststatus=2
set hlsearch
set expandtab
set smartindent

set showmatch
set nocompatible
set tabstop=2
set softtabstop=2
set shiftwidth=2
set autoindent
autocmd StdinReadPre * let s:std_in=1
" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
map <F3> :NERDTreeToggle<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" set completeopt=longest,menu	"让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
autocmd InsertLeave * if pumvisible() == 0|pclose|endif	"离开插入模式后自动关闭预览窗口

" set color for nerd tree
" NERDTress File highlighting
function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg)
 exec 'autocmd filetype nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:guibg .' guifg='. a:guifg
 exec 'autocmd filetype nerdtree syn match ' . a:extension .' #^\s\+.*'. a:extension .'$#'
endfunction
call NERDTreeHighlightFile('jade', 'green', 'none', 'green', '#151515')
call NERDTreeHighlightFile('ini', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#151515')
call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#151515')
call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#151515')
call NERDTreeHighlightFile('coffee', 'Red', 'none', 'red', '#151515')
call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#151515')
call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#151515')

ideavim 配置:

text 复制代码
let mapleader=";"
noremap <leader>k gt
noremap <leader>j gT
noremap <leader>h :action Back<CR>
noremap <leader>l :action Forward<CR>
noremap <leader>v :action VimVisualToggleBlockMode<CR>
noremap <leader>fs :action FileStructurePopup<CR>

noremap <leader>ga :action GotoAction<CR>
noremap <leader>gc :action GotoClass<CR>
noremap <leader>gd :action GotoDeclaration<CR>
noremap <leader>gi :action GotoImplementation<CR>
noremap <leader>gs :action GotoSuperMethod<CR>
noremap <leader>gt :action GotoTest<CR>

noremap / :action Find<CR>
noremap f :action AceAction<CR>
noremap F :action AceTargetAction<CR>
set rnu
set nu
相关推荐
Fhd-学习笔记3 小时前
《大语言模型》综述学习笔记
笔记·学习·语言模型
简知圈4 小时前
【04-自己画P封装,并添加已有3D封装】
笔记·stm32·单片机·学习·pcb工艺
YxVoyager4 小时前
GAMES101学习笔记(五):Texture 纹理(纹理映射、重心坐标、纹理贴图)
笔记·学习·图形渲染
Buring_learn5 小时前
代理模式 -- 学习笔记
笔记·学习·代理模式
池佳齐5 小时前
《AI大模型开发笔记》DeepSeek技术创新点
人工智能·笔记
圆圆滚滚小企鹅。6 小时前
刷题记录 HOT100回溯算法-6:79. 单词搜索
笔记·python·算法·leetcode
大邳草民6 小时前
计算机网络的基础设备
笔记·计算机网络
霸王蟹7 小时前
文本复制兼容方案最佳实现落地。
前端·javascript·vue.js·笔记·学习
夏尔Gaesar7 小时前
Vim安装与配置教程(解决软件包Vim没有安装可候选)
linux·编辑器·vim
dal118网工任子仪8 小时前
86.(2)攻防世界 WEB PHP2
笔记·学习