首页 > 其他分享 >Vim实用技巧

Vim实用技巧

时间:2022-08-27 20:11:15浏览次数:66  
标签:实用技巧 移动 字符 ctrl vim 光标 Vim 粘贴

这篇文章是看《Vim实用技巧》整理的一些笔记,以及日常使用vim的小技巧的收录,保持更新

VIM

查找

f{char}查找,;向前查找 ,向后查找跳转到指定字符之上. F反向查找
t 查找字符,光标落在前一位,T 反向查找
dt. 删除到 . 字符为止
*查找当前光标下的单词

移动

hjkl 左下上右移动
0 移动到行头
^ 移动到本行第一个不是blank的字符
$ 移动到行尾
g_ 移动到行尾最后一个不是blank的字符
fa 移动到本行下一个为a的字符处(;跳转到下一个,,跳转到上一个)
ta 移动光标到a字符的前一个字符处
zz 把当前行放在屏幕中间
zt 把当前行放在屏幕最上方
zb 把当前行移动到当前屏幕的尾部
gg 跳转到第一行行首
G 跳转到最后一行
H 跳转到当前屏幕第一行
M 跳转到当前屏幕中间
L 跳转到当前屏幕尾部
% 括号匹配移动,(,{,[,需要先把光标移动到括号上
*匹配光标当前所在的单词

w向前一个单词,光标落在词首
W移动的是一个词串,以空格为分隔
b向后一个单词,光标落在词首
e向前一个单词,光标落在词尾
ge向后一个单词,光标落在词尾

gk 向上移动一个屏幕行
gj 向下移动一个屏幕行
g^ 移动到屏幕行开头
g$ 移动到屏幕行结尾
一行文字占了多个可视行时比较有用

m{letter}标记当前光标位置
``{letter}` 回跳到光标处

增删改

C删除当前字符到行尾,并进入插入模式,效果等同于 c$
s删除当前字符并进入插入模式 等同于 cl
S删除当前行并进入插入模式 等同于 ^C
I光标移至行首,并进入插入模式,等同于 ^i
A光标移至行尾,并进入插入模式,等同于 $a
o下方插入一行 等同于 A<CR>
O上方插入一行 等同于 ko
daw删除一个单词
daW删除一个单词,以空格作为单词切分
c3w 修改3个单词
dap删除整个段落
gUaw把单词变为大写
guaw把单词变为小写
g~aw单词大小写翻转
p 分为行模式和字符模式,取决于你复制的东西是什么

行模式
p粘贴到光标所在行的下一行,P粘贴到上一行,当复制多行后一般会使用P
gP粘贴完以后,光标移动到被粘贴行的下一行的行首,行模式P粘贴相对于gP的好处是光标会在第二个复制的行上,方便直接修改

字符模式
p粘贴到当前字符之后,P粘贴到当前字符之前。gp 和 gP的差别是光标停留位置。gp是在被粘贴字符的最后一个字符,gP是被粘贴最后一个字符后面,当前粘贴后要做一些修改时,需要注意找到合适光标的位置

可视模式

V选中行
ctrl+v 选中列
o 调整选区的两端
U 选中直接变为大写。普通模式下要用gU,让标签中变为大写 gUit。可视模式不太适合需要重复执行的操作
u 选中直接变为小写
~翻转大小写
v/xx 选中从当前光标到xx 字符,然后可以执行删除或其他编辑操作。通过查找进行移动/选区

命令模式

[range] delete [x]剪切指定行到寄存器 x 中
[range] yank [x]复制指定行到寄存器x中
[line] put [x]在指定行粘贴寄存器x的内容
[range] copy {address}将指定范围内容拷贝到 {address} 之下
[range] move {address}将指定范围内容移动到 {address} 之下
:3,35 normal A; ex 命令对相应行执行普通模式的命令

寄存器

reg "0 查看寄存器0 的内容
"0复制专用寄存器, 复制的时候既会存到无名寄存器,也会存到"0
"_黑洞寄存器 "_diw 删除不保留副本
设置删除而非剪切

nnoremap <leader>d "_d
vnoremap <leader>d "_d

"" 匿名寄存器
"+系统剪切板
"*选择专用寄存器

vim 和 系统剪贴板打通
首先vim版本需要支持 clipboard vim --version | grep clipboard 要有 + 号
然后设置

set clipboard=unnamedplus

效果是系统粘贴版的东西能直接 p粘贴, y复制的东西能直接 ctrl +v

https://advancedweb.hu/working-with-the-system-clipboard-in-vim/
https://stackoverflow.com/questions/30691466/what-is-difference-between-vims-clipboard-unnamed-and-unnamedplus-settings

ideavim中设置了 set clipboard=unnamedplus是生效的,但是mac自带的vim不生效,查了下mac上一般推荐使用macvim,因为mac上的剪切板会有很多奇怪的行为
使用MacVim,并打通剪切板,这里测试 set clipboard=unnamedplus并不work,不太清楚啥原因

~/.vim/vimrc
set clipboard=unnamed

~/.zshrc
alias vim='/Applications/MacVim.app/Contents/MacOS/Vim'

粘贴系统剪贴板的东西,为了避免错位应该使用 set paste

.重复上次操作
q{register} 录制宏
q 结束录制
:reg {register} 查看宏内容
@{register} 执行某个宏
@@ 执行某个最近执行的宏
10@@执行10次最近执行的宏
串行执行宏 10@@
并行执行宏 行模式高亮选中,再执行:normal @@ 这样是并行执行的,并且某行执行失败不会影响其他行

文件操作

:100,200w filename 保存某些行到新文件
:100,200w! filename 保存某些行到新文件 覆盖文件的形式保存

IDEA常用快捷键

有一些是自定义的

快捷移动和删除

ctrl-w 删除前一个单词
ctrl-u删除到行首
ctrl-k删除到行尾
ctrl-a到行首
ctrl-e到行尾
在使用IdeaVim后有一些快捷键会和vim冲突,需要根据自己习惯进行设置

窗口分屏

ctrl + 1左右切分窗口
ctrl + 2上下切分窗口
ctrl + 3把当前窗口移到对面
ctrl + 4unsplit all
option + tab 鼠标在窗口之间跳转
cmd + shift + []在一个split内切换窗口

IdeaVim

在idea中使用vim,通过ideavim插件来实现,ideavim中也内置了一些vim插件,列表如下
https://github.com/JetBrains/ideavim/wiki/Emulated-plugins
注意需要安装3个前置插件参照https://github.com/AlexPl292/IdeaVim-EasyMotion 否则跟着其他人的配置配了map key,半天都不生效

常用插件
easymotion
argtextobj
multiple-cursors
surround
easymotion

Vim实用哲学

  1. 先学会盲打,再学习vim
  2. 理想的范式,一键移动,一键执行

参考

https://www.bilibili.com/video/BV164411P7tw ideavim插件配置
https://www.bilibili.com/video/BV164411P7tw vim 上古神器
参考配置
https://www.jianshu.com/p/fd82bbed2c25
https://github.com/einverne/dotfiles/blob/master/idea/.ideavimrc
https://github.com/zhaohongxuan/dotfiles/blob/master/.ideavimrc

标签:实用技巧,移动,字符,ctrl,vim,光标,Vim,粘贴
From: https://www.cnblogs.com/Aitozi/p/16631360.html

相关文章

  • vim在切换normal mode和insert mode 时反复切换输入法的解决办法
    vscodevim的配置切换输入法今天在用vscode写(水)一个暑研论文的时候,用的是还没用多久的vim输入方式,vim的最大优点就是移动光标的多种方式可以最大程度减少对方向键或者是鼠......
  • vim 模式切换与常用命令
    前两天涉及到在linux中新增,编辑文件,那么vim就是绕不过去的使用工具了,本篇主要记录vim的简单使用指南,有遇到新的使用方法在进一步补充。首先是vim的简单介绍:Vimisahigh......
  • Xshell下vim异常问题记录
    问题描述:一直使用xshell作为远程管理服务器的工具,最近在使用vim编辑文档时总是出现异常,进入插入模式总是光标下移两行,回车键后总是出现莫名其妙的内容,在vim左下的状态行也......
  • vim中yy和y$的区别是什么?
    你这是完全理解错了。yy和y$的差别不是通过“多复制什么”来实现的,而是vim自己的特定逻辑。你用"+yy或者"*yy把一行复制进剪贴板然后在其他应用里粘贴,就不会有vim里“......
  • vim使用
    把CapsLock映射成。这个操作我建议使用操作系统的改键工具来完成。win下的修改教程链接,mac下直接在系统设置中改即可。不推荐在vim中改是因为系统内修改一次,所有能开启vi......
  • 复习:linux vim编辑器
    Vimi键插入esc退出u撤销x删除c选择文本y复制yy复制当前行dd删除光标所在行p 粘贴:w......
  • linux 解决vim无法正常打开文件
    如果在使用vim打开某个文件时出现以下内容,是因为上次打开文件后未正常关闭,留下了一个文件名加.swp后缀的文件(隐藏文件),删除这个.swp文件便能正常打开文件了E325:ATTENTION......
  • VIM编辑器的基本使用
    1.在Linux终端下打开《VIM教程》[xiaocer@localhost~]$vimtutor2.命令模式下常用操作1.删除删除光标所在一行内容:dd删除光标所在行开始n行内容:ndd2.复制复制一......
  • vim
    什么是vimvim是源于linux的一款文本编辑器,在vi基础上开发,具有强大的文本编辑能力和跨平台Vimtutor是Vim内置应用快捷键练习模块Vim的三种模式命令行模式......
  • VIM 实现tab标签页及分屏,切换命令
    VIM实现tab标签页及分屏,切换命令 1,在一个窗口中,VIM的小tab标签页命令: :tabnew[++opt选项][+cmd]文件           建立对指定文件新的tab :tabc ......