最全VIM in PyCharm 的.ideavimrc文件的键盘设置

.ideavimrc —— 插件vim在PyCharm的配置文件,位于C盘Administrator目录,通过修改可以无限绑定各种键。

具体键盘图片链接:一图读懂 VIM KeyMap / CheatSheet in PyCharm Idea_aBenL的博客-CSDN博客

" ================================================================================
" Desc: IntelliJ IDEA ideavim - PyCharm 2023.3.1(CE)
" Redesign : aBenL@zhihu.com
" Create Date: 2023-02-01
" Original Author: chloneda <chloneda@163.com>
" Repository: https://github.com/chloneda/vim-cheatsheet
" Blog: https://www.cnblogs.com/chloneda
" License: MIT
" Ideavim Github: https://github.com/JetBrains/ideavim
" IdeaVim-EasyMotion: https://github.com/AlexPl292/IdeaVim-EasyMotion
" Notes:
"   1. Vim 脚本注释是以 " 开头的,只存在行注释,不存在块注释
"   2. 本文档中的 <Leader> 前缀键默认是 "\" 键,后面改为 Space 空格键
"   3. 本文档按功能、再按按键进行映射设置,力求分类明了,方便记忆
"   4. 插件 Ideavim 在命令模式下输入 :actionlist,查询 IDEA 中所有 action
"   5. 将本文档内容复制到 ~/.ideavimrc 完成自定义配置
" ================================================================================

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Part 1. VIM 本身

" --------------------------------
" Part 1.1. set-通用基本设置

set number                      " 显示行号,缩写:set nu
set relativenumber              " 设置相对行号,缩写:set rnu
set showmode                    " 在底部显示当前模式
set showcmd                     " 在状态栏中显示命令
"不支持 set wrap                        " 设置代码自动折行
"不支持 set foldopen-=hor               " 设置啥时候都不可以打开折叠 hor 就是水平移动 的时候 不要打开折叠

set hlsearch                    " 搜索高亮显示,缩写:set hls
set highlightedyank             " yiw 的时候 短暂的高亮复制 的对象
set ignorecase                  " 搜索时忽略大小写
set incsearch                   " 搜索时立即高亮结果

"不支持 set shiftwidth=4                " 每次缩进是 4 个空格
"不支持 set softtabstop=4               " 每次按 Tab 键输入 4 个空格
set smartcase                   " 有一个或以上大写字母时仍大小写敏感
set clipboard+=unnamed          " Vim 的默认寄存器和系统剪贴板共享
set clipboard+=ideaput          " enable native idea paste action for put operation
set history=200                 " 记录 200 条历史命令,默认是 20 条
set scrolloff=5                " 光标距离顶部和底部 10 行
"不支持 set showtabline=2               " 总是显示标签栏
"不支持 set laststatus=2                " 总是显示状态栏
"不支持 set paste                       " 开启粘贴的模式,?
"不支持 set ruler                       " 显示光标当前位置

"不支持 set encoding=utf-8              " 编码设置,缩写:set enc
"不支持 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr
"不支持 set fileformats=unix,dos,mac
"不支持 set termencoding=utf-8
"不支持 set formatoptions+=m
"不支持 set formatoptions+=B

set ideavimsupport+=dialog      " 在对话框编辑器中禁用 IdeaVim
"不支持 set ideaenabledbufs+=singleline

" --------------------------------
" Part 1.2. set- 插件设置

set easymotion                  " Easymotion 插件<C-;>:easymotion-sn
let g:EasyMotion_do_mapping=0
   " 禁用 Easymotion 默认映射

set keep-english-in-normal      " 自动切换英文输入法,测试不明白

set commentary                  " 注释插件:gcc当前行, gcap整, V+gc选择后

set surround                    " 快捷添加()[]{}'"-=*等一切符合,以及网页标签<>,好用
                                " ysw+符号(单个单词加)、ys3w+符号(3个单词加如: s1,s2 )、ySS+(整行加)
                                " cs+对象符号+新符号(改)、ds+符号(删)、v+选择+S+符号(选择后加)

set argtextobj                  " 快速选中函数的参数,ia-inner,aa-outer,只能选择最外面的函数???
let g:argtextobj_pairs="(:),{:},<:>"
    " 设置在(a,b) 、{a,b} 、<a,b> 这种括号里面

set textobj-indent              " 选择相同缩进的对象 vii vai vaI

" --------------------------------
" Part 1.3. set- IntelliJ IDEA 特有基础设置
set ideajoin                    " 智能连接字符串及控制结构等
set ideamarks                   " 触发 IDEA 全局标签

" --------------------------------
" 1.4. let- 全局设置
" 修改 Leader 前缀键为 Space 空格键,默认是"\",该注释禁止放后面,否则不起作用
let mapleader=' '

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Part 2. 系统或开发平台的快捷命令类

" ================================================================================
" 通用按键映射说明:
"                Normal    Visual    Operator Pending    Insert Only    Command Line
"                常规模式    可视化模式     运算符模式          插入模式         命令行模式
"                              v          d,y,c              i,a            /,:
"map  noremap       X          X            X
"nmap nnoremap      X
"vmap vnoremap                 X
"omap onoremap                              X
"map! noremap!                                               X               X
"imap inoremap                                               X
"cmap cnoremap                                                               X

" 用法说明:   [nore]map [<args>] {lhs} {rhs}
" map前面加了nore 表示非递归映射,递归映射是指rhs会当做lhs再解释一次,
" 非递归映射则不会,即rhs会被放入到Vim最终要处理的字符队列里去
" 比如先后定义了nnoremap x iaa , nmap <F2> x ,那么按F2键相当于执行了按iaa键的功能,
" 如果第二个命令用的是nnoremap <F2> x ,那么按下F2键相当于执行了按下x键的功能
" <args> 表示map命令的一些参数,其中常用的有
"   <buffer> 表示这个映射只是在当前的buffer中定义,而不是定义全局的映射
"   <expr> 表示{rhs}是一个Vim表达式 ,而不是按键序列,如:
"          noremap  <expr>0     col('.') == 1 ? '^': '0'
"   <silent> 表示静默映射,不会显示Vim在处理rhs过程中对界面产生的变化。
" ================================================================================

" --------------------------------
" Part 2.1. 有关VIM的基本设置 vim+
nnoremap <Leader>vs :w<CR>:source ~/.ideavimrc<CR>
    " 重新加载执行ideavimrc的命令,可随便检查各命令是否被执行,出错会提示。
    " :source {file} - Read Ex commands from {file}.  These are commands that start with a ":".
" nnoremap <Leader>vr :action IdeaVim.ReloadVimRc.reload<CR>
    " 重新加载ideavimrc,这个更好。idea自带快捷键:<C-S-O>
nnoremap <Leader>va :action VimActions<CR>
    " Vim 配置操作,相当于右击右下角Vim图标
nmap <Leader>vm <Action>(OpenMinimapSettings)
    " idea 设置
nmap <Leader>vi <Action>(ShowSettings)
    " idea 设置
"待研究 nmap <Leader>ve <Action>(OpenFile C:\Users\Administrator\AppData\Roaming\JetBrains\PyCharmCE2023
.1\options\vim_settings_local.xml) RestartIde<CR>
    " 清理vim的寄存器、搜索等记录,重启py

" --------------------------------
" Part 2.2. 文件、窗口、标签操作 file+
nnoremap <Leader>fs :w<CR>
    " 快速保存本文件,系统的<C-S>是全部保存
nnoremap <Leader>fc :action CloseContent<CR>
    " 关闭窗口但不保存。vim自带的ZZ,ZQ均为保存并关闭。
nnoremap <Leader>fr :action RecentFiles<CR>
    " 打开过的历史记录文件夹
nnoremap <Leader>fp :action ShowFilePath<CR>
    " 显示当前文件的文件路径
nnoremap <Leader>fm :action ShowPopupMenu<CR>
    " 弹出右键菜单

" <Leader>+数字键 切换文件窗口 Tab
nmap <silent> \1 1gt
nmap <silent> \2 2gt
nmap <silent> \3 3gt
nmap <silent> \4 4gt
nmap <silent> \5 5gt
nmap <silent> \6 6gt
nmap <silent> \7 7gt
nmap <silent> \8 8gt
nmap <silent> \9 9gt
nmap <silent> \0 10gt
nnoremap gw <C-W>w
    " 窗口循环切换,占用了原来m的mark功能

" --------------------------------
" Part 2.3. 撤销、重做,自动居中
nmap U <Action>($Redo)zz
nmap u uzz

" --------------------------------
" Part 2.4. 书签管理
nmap m; <Action>(ShowBookmarks)
    " 显示所有书签
nmap m' <Action>(Bookmarks)
    " 编辑书签

" 标记书签
nmap m/ <Action>(ToggleBookmark)
nmap m0 <Action>(ToggleBookmark0)
nmap m1 <Action>(ToggleBookmark1)
nmap m2 <Action>(ToggleBookmark2)
nmap m3 <Action>(ToggleBookmark3)
nmap m4 <Action>(ToggleBookmark4)
nmap m5 <Action>(ToggleBookmark5)
nmap m6 <Action>(ToggleBookmark6)
nmap m7 <Action>(ToggleBookmark7)
nmap m8 <Action>(ToggleBookmark8)
nmap m9 <Action>(ToggleBookmark9)
nmap ma <Action>(ToggleBookmarkA)
nmap mb <Action>(ToggleBookmarkB)
nmap mc <Action>(ToggleBookmarkC)
nmap md <Action>(ToggleBookmarkD)
nmap me <Action>(ToggleBookmarkE)
nmap mf <Action>(ToggleBookmarkF)
nmap mg <Action>(ToggleBookmarkG)
nmap mh <Action>(ToggleBookmarkH)
nmap mi <Action>(ToggleBookmarkI)
nmap mj <Action>(ToggleBookmarkJ)
nmap mk <Action>(ToggleBookmarkK)
nmap ml <Action>(ToggleBookmarkL)
nmap mm <Action>(ToggleBookmarkM)
nmap mn <Action>(ToggleBookmarkN)
nmap mo <Action>(ToggleBookmarkO)
nmap mp <Action>(ToggleBookmarkP)
nmap mq <Action>(ToggleBookmarkQ)
nmap mr <Action>(ToggleBookmarkR)
nmap ms <Action>(ToggleBookmarkS)
nmap mt <Action>(ToggleBookmarkT)
nmap mu <Action>(ToggleBookmarkU)
nmap mv <Action>(ToggleBookmarkV)
nmap mw <Action>(ToggleBookmarkW)
nmap mx <Action>(ToggleBookmarkX)
nmap my <Action>(ToggleBookmarkY)
nmap mz <Action>(ToggleBookmarkZ)

nmap 'a <Action>(GotoBookmarkA)
nmap 'b <Action>(GotoBookmarkB)
nmap 'c <Action>(GotoBookmarkC)
nmap 'd <Action>(GotoBookmarkD)
nmap 'e <Action>(GotoBookmarkE)
nmap 'f <Action>(GotoBookmarkF)
nmap 'g <Action>(GotoBookmarkG)
nmap 'h <Action>(GotoBookmarkH)
nmap 'i <Action>(GotoBookmarkI)
nmap 'j <Action>(GotoBookmarkJ)
nmap 'k <Action>(GotoBookmarkK)
nmap 'l <Action>(GotoBookmarkL)
nmap 'm <Action>(GotoBookmarkM)
nmap 'n <Action>(GotoBookmarkN)
nmap 'o <Action>(GotoBookmarkO)
nmap 'p <Action>(GotoBookmarkP)
nmap 'q <Action>(GotoBookmarkQ)
nmap 'r <Action>(GotoBookmarkR)
nmap 's <Action>(GotoBookmarkS)
nmap 't <Action>(GotoBookmarkT)
nmap 'u <Action>(GotoBookmarkU)
nmap 'v <Action>(GotoBookmarkV)
nmap 'w <Action>(GotoBookmarkW)
nmap 'x <Action>(GotoBookmarkX)
nmap 'y <Action>(GotoBookmarkY)
nmap 'z <Action>(GotoBookmarkZ)

" 跳转书签
nmap '\ <Action>(GotoNextBookmark)
nmap '; <Action>(GotoPreviousBookmark)

" --------------------------------
" Part 2.5. 界面显示
nnoremap <Leader>cv :action ChangeView<CR>
    " 改变PyC的视图
nnoremap g0 :set relativenumber!<CR>
    " 切换显示相对行号
sethandler <C-/> n:vim i:ide x:ide v:ide
    " 设置键的使用范围,具体见https://github.com/JetBrains/ideavim/wiki/sethandler
nnoremap <C-/> :nohls<CR>
    " 取消查找高亮显示

" 折叠
nnoremap zc zC
    " 折叠光标下所有代码
nnoremap zm zM
    " 折叠所有代码,设置 foldlevel=0,设置 foldenable
nnoremap zr zR
    " 打开所有代码,设置 foldlevel 为最大值

nnoremap <C-T> <C-E>
    " 上滚一行改到C-T,与下滚一行C-Y对应

" --------------------------------
" Part 2.6. 命令模式
nnoremap g; :<Up>
    " 进入上次命令的对话框

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 以下不按n、o、i、v、c等模式区分,只按功能区分
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Part 3. 光标移动或跳转

" --------------------------------
" Part 3.1. 优化原来
nnoremap - $
nnoremap [ {
nnoremap ] }
"无效? nnoremap <expr> 0 col('.')==1?'^':'0'
"无效? nnoremap | ^

" 增加退出到normal模式的按键,idea中引号'用 Þ 代表
noremap <C-Þ> <ESC>
inoremap <C-Þ> <ESC>
cnoremap <C-Þ> <ESC>
    "无效?
" inoremap jk <ESC>

" --------------------------------
" Part 3.2. 整页移动
" 调整c-h和c-l前后翻半页,操作后,当前行自动居中
nnoremap <C-H> <C-U>zz
nnoremap <C-L> <C-D>zz
" 调整a-h和a-l前后翻一页,操作后,当前行自动居中
nnoremap <A-H> <C-B>zz
nnoremap <A-L> <C-F>zz

" --------------------------------
" Part 3.3. 在插入和命令模式下移动光标,快速到行尾和行首
inoremap <C-H> <Left>
inoremap <C-J> <Down>
inoremap <C-K> <Up>
inoremap <C-L> <Right>
inoremap <C-N> <Home>
inoremap <C-M> <End>
cnoremap <C-H> <Left>
cnoremap <C-J> <Down>
cnoremap <C-K> <Up>
cnoremap <C-L> <Right>
cnoremap <C-N> <Home>
cnoremap <C-M> <End>

" --------------------------------
" Part 3.5. ace跳转,需要安装 AceJump 插件
noremap <Leader><Leader> :action AceAction<CR>
    " 白色光标——常规,ACE后到单词首字母。简化跳转,同默认快捷键<C-;>
noremap <Leader>ab :action AceBackwardAction<CR>
    " 白色光标——只向后ace,另外还有AceForwardAction
noremap <Leader>ad :action AceDeclarationAction<CR>
    " 天蓝色光标——ace并跳到改变量的声明处
noremap <Leader>at :action AceTargetAction<CR>
    " 橙色光标——ace并选中该单词,自带快捷键<A-C-;>
noremap <Leader>ar :action AceReverseAction<CR>
    " 绿色光标——ace后到单词尾部
noremap <Leader>aw :action AceWordAction<CR>
    " 显示所有单词首字母,另外还有AceWordBackwardsAction,AceWordEndAction,AceWordForwardAction,AceWordStartAction
noremap <Leader>al :action AceLineAction<CR>
    " 显示所有行首和行尾,自带快捷键<C-S-;>。
    " 只行首为AceLineStartsAction,只首字AceLineIndentsAction,只行尾为AceLineEndsAction

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Part 4. 查找、替换

" --------------------------------
" Part 4.1. vim查找

nnoremap g/ /<Up>
    " 进入上次向后搜索的对话框
vmap / y/<C-V><CR>
    " 选择字符后,/直接查找,类似*和#

" nnoremap <silent> * *N
    " *后不跳下一个
" 查找下一个内容,并居中
" nnoremap <silent> n nzz
" nnoremap <silent> N Nzz
" nnoremap <silent> * *zz
    " 区分大小写case sensitive
" nnoremap <silent> g* g*zz
    " 不区分大小写Case Insensitive
" nnoremap <silent> # #zz

" --------------------------------
" Part 4.2. idea查找find(本文件)或search(全局)

" sethandler <C-F> n:ide i:vim x:vim v:vim
    " 设置键的使用范围,具体见https://github.com/JetBrains/ideavim/wiki/sethandler
nnoremap <C-F> :action Find<CR>
    " 当前文件搜索,取消原vim功能:向下翻1页。
    " 没有vim的/健方便,但可以搜索组合词和中文,vim只能搜索独立的英文单词。
nnoremap <A-F> :action FindInPath<CR>
    " 全局分类搜索

" 全局搜索 goto
nnoremap <Leader>ge :action SearchEverywhere<CR>
    " 搜索任何位置,idea已有快捷方式:连续双击shift健
nnoremap <Leader>gc :action GotoClass<CR>
    " 打开 类   跳转对话框
nnoremap <Leader>gf :action GotoFile<CR>
    " 打开 文件 跳转对话框
nnoremap <Leader>ga :action GotoAction<CR>
    " 打开 动作 跳转对话框
nnoremap <Leader>gs :action FileStructurePopup<CR>
    " 弹出变量结构信息

" 代码溯源 code
nnoremap <Leader>cfu :action FindUsages<CR>
    " 打开当前方法的 查找 对话框
nnoremap <Leader>csu :action ShowUsages<CR>
    " 打开当前方法的 用法 对话框
nnoremap <Leader>cd :action GotoDeclaration<CR>
    " 跳转到用法或声明,和下面EditSource一样?
nnoremap <Leader>cs :action EditSource<CR>
    " 跳转到定义,vim自带快捷键:gd或gD或<C-]>,idea快捷键:<F4>

" --------------------------------
" part 4.3. idea的替换

noremap <C-R> :action Replace<CR>
    " 当前文件替换,取消原vim功能:重做(已改为 U )
noremap <A-R> :action ReplaceInPath<CR>
    " 全局分类替换

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" part 5. 字符、文本修改

" --------------------------------
" part 5.1. 插入模式下增加删除快捷方式
inoremap <C-;> <del>
" 无效? cnoremap <C-;> <del>

" --------------------------------
" part 5.2. 调整vim自带的数字增减快捷键
sethandler <C-A> n:ide i:vim x:vim v:vim
    " 设置键的使用范围,具体见https://github.com/JetBrains/ideavim/wiki/sethandler
nnoremap <A-X> <C-A>
    " 光标后的数字减1。<C-X>为加1

" --------------------------------
" Part 5.3. 缩进、排版
nmap <TAB> >>

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" part 6. 选择
" 符号选择测试成功:'test',"test",(test),[test],{test},test,test,test,test,test
" 符号选择测试不成功:/test/,;test;,test,,-test-,\test\,test,test,test,test,test,test,

" --------------------------------
" part 6.1. 选择到:第一个实体字符^改为o(行首0还是用0),行尾$改为p — 好用
nnoremap vo v^
    " 向前选择
nnoremap vp v$
    " 向后选择
onoremap o ^
    " cdy+o,向前选择,但不含本光标字符。与下面后不一样,如需包含,使用:voy
onoremap p $
    " cdy+p,向后选择,含本光标字符。dp相当于D

" --------------------------------
" Part 6.2. 选择单词或符号内的内容时,i和a后的优化 - vcxz代表([{<,'还是',"变为.

" Part 6.2.1. dyc后的i(inside)优化
onoremap w iw
    " w和iw的区别:w从当前位置到单词结尾,iw无论什么位置都选择当前单词
onoremap v i(
    " 原来使用逗号,,但这样损失,本来在行内向前搜索的功能,所以改为其他
    " 优化surround功能不成功:onoremap swV sw(
    " 优化surround功能不成功:nmap sv s(
onoremap c i[
onoremap x i{
    " 如cx,将优先使用exchange的cx关键字功能(相当于一个o命令),{测试用},因此增加以下
onoremap ix i{
onoremap z i<
onoremap ' i'
onoremap . i"

" Part 6.2.2. dyc后的a(around)优化
onoremap aw aw
onoremap av a(
onoremap ac a[
onoremap ax a{
onoremap az a<
onoremap a' a'
onoremap a. a"

" Part 6.2.3. v后的i(inside)优化
nnoremap vw viw
nnoremap vv vi(
nnoremap vc vi[
nnoremap vx vi{
nnoremap vz vi<
nnoremap v' vi'
nnoremap v. vi"

" Part 6.2.4. v后的a(around)优化
nnoremap vaw vaw
    " 选择包含单词后的空格
nnoremap vav va(
nnoremap vac va[
nnoremap vax va{
nnoremap vaz va<
nnoremap va' va'
nnoremap va. va"

" --------------------------------
" Part 6.3. 其他选择
" nnoremap <A-A> ggVG
    " 全选,此方法刷新光标位置,不好用。改为在idea的全选快捷键位<A-A>,或系统默认的<C-A>

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Part 7. 复制、粘贴

" --------------------------------
" Part 7.1. 寄存器相关
set ReplaceWithRegister
    " 执行替换文本操作不会覆盖寄存器的内容,操作符gr视同operator命令:
    " v模式:目标gr
    " n模式:grw,grr整行,gri(等于abl修改后的grv,gra<等于abl修改后的graz
nnoremap g' :registers<CR>
    " 显示寄存器
" 清空寄存器,以下PcY不支持vim的很多function功能,囧
    " command! WipeReg call setreg('1','')
    " command! WipeReg for i in range(a,z) | silent! call setreg(nr2char(i), []) | endfor
    " 全网没找到idea下如何删除寄存器,自行看看py退出时候变化,发现vim_settings_local.xml,嘿嘿
" 以下是笨方法
func WipeReg()
  let @" = ""
  let @0 = ""
  let @1 = ""
  let @2 = ""
  let @3 = ""
  let @4 = ""
  let @5 = ""
  let @6 = ""
  let @7 = ""
  let @8 = ""
  let @9 = ""
  let @- = ""
  let @* = ""
  let @+ = ""
  let @. = ""
  let @: = ""
  let @/ = ""
  echo "清空寄存器"
  "不支持: unlet @c
endfunc
nnoremap <expr> <A-Þ>  WipeReg()
    " idea中引号'用 Þ 代表

" --------------------------------
" Part 7.2. 增加粘贴寄存器"0的快捷键
" sethandler <C-P> n:vim i:ide x:vim v:vim
    " 设置键的使用范围,具体见https://github.com/JetBrains/ideavim/wiki/sethandler
noremap <C-P> "0p
inoremap <C-P> <C-R>0
    " abenl增加:解决d后粘贴之前y的内容,原PyC的<C-P>的形参信息功能改为<A-P>

" --------------------------------
" Part 7.3. 增加快速复制行的快捷键
nnoremap gp :put<CR>
    " 在当前行的下一行粘贴。:[line]pu[t] [x] 将文本 [来自寄存器 x] 放在 [行] 之后(默认当前行)
nnoremap go k:put<CR>
    " 在当前行的上一行粘贴
sethandler <C-D> n:ide i:vim x:vim v:vim
    " 设置键的使用范围,具体见https://github.com/JetBrains/ideavim/wiki/sethandler

" --------------------------------
" Part 7.4. 恢复各种模式下的^C和^V
vnoremap <C-C> "+y
vnoremap <C-V> "+P
inoremap <C-V> <C-R>+
cnoremap <C-V> <C-R>+

" --------------------------------
" Part 7.5. 整行移动
nmap <C-J> <Action>(MoveLineDown)
nmap <C-K> <Action>(MoveLineUp)
nmap <A-J> <Action>(MoveStatementDown)
nmap <A-K> <Action>(MoveStatementUp)
vmap <C-J> <Action>(MoveLineDown)
vmap <C-K> <Action>(MoveLineUp)
vmap <A-J> <Action>(MoveStatementDown)
vmap <A-K> <Action>(MoveStatementUp)

" --------------------------------
" Part 7.6. 交换文本或行
set exchange
    " 相互交换:cx{范围}(如w,e,b等)再cx{范围} ; cxx交换行; 第二次可用.快捷方式
    " v选中后X交换

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Part 8. 编程相关

" --------------------------------
" Part 8.1. 查询信息

" nnoremap <C-Q> :action QuickJavaDoc<CR>
    " 查看光标下的对应文档(如果有的话),相当于vim的K,与原idea快捷键<C-Q>相同
noremap <A-E> :action ShowErrorDescription<CR>
    " 显示光标下的错误信息testabc,相当于<C-P>

" --------------------------------
" Part 8.2. 编程跳转

" nmap <A-O> <Action>(Back)
    " IDEA 自带的回退
" nnoremap <A-I> :action Forward<CR>
    " IDEA 自带的前进
noremap <A-O> :action GotoPreviousError<CR>
    " 上一个错误,idea快捷键:<S-F2>
noremap <A-I> :action GotoNextError<CR>
    " 下一个错误,idea快捷键:<F2>

" --------------------------------
" Part 8.3. 修改
nnoremap gs :action RenameElement<CR><ESC><Right>a
    " 元素名称重构,idea特色功能<S-F6>

" --------------------------------
" Part 8.4. PyCharm快捷插入代码 p+
noremap <Leader>pt :action InsertLiveTemplate<CR>
    " 插入实时模板 <C-J>
noremap <Leader>pi :action ImplementMethods<CR>
    " 实施方法 <C-I>
noremap <Leader>po :action OverrideMethods<CR>
    " 重写方法 <C-O>

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Part 9. aBenL定制,快捷添加指定代码

" --------------------------------
" Part 9.1. 针对ideavimrc
nnoremap <Leader>' I"<space><Esc>
    " 行首增加注释符"
nnoremap <Leader>" A<space><space><space><space>"<delete><space>
    " 行尾增加注释符",并进入编辑模式

" --------------------------------
" Part 9.2. 针对Python
nnoremap <Leader># A<space><space>#<space>
    " 行尾增加注释符#,并进入编辑模式。idea内置快捷方式<C-/>或vim插件gcc为行首加#
vnoremap <Leader>pp cprint(f'{<C-r>"=}')<ESC>
    " 选中后,快速添加f方式输出数据

" --------------------------------
" Part 9.3. 函数测试:inserts a list number that increases
let counter = 0
inoremap <expr> <A-.> ListItem()
inoremap <expr> <A-,> ListReset()
func ListItem()
  let g:counter += 1
  return g:counter . '. '
endfunc
func ListReset()
  let g:counter = 0
  return ''
endfunc

" b:name  variable local to a buffer
" w:name  variable local to a window
" g:name  global variable (also in a function)
" v:name  variable predefined by Vim

set vs-success
"""""""""""""""""""""""""""""""""""""" END """""""""""""""""""""""""""""""""""""""

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 你可以尝试以下步骤: 1. 首先进入 pycharm.desktop 文件所在的目录。 2. 打开终端,输入以下命令: ``` chmod +x pycharm.desktop ``` 该命令会赋予 pycharm.desktop 文件执行权限。 3. 接着,输入以下命令: ``` ./pycharm.desktop ``` 该命令会执行 pycharm.desktop 文件,从而打开 PyCharm。 注意:如果你没有安装 PyCharm,以上步骤可能无法正常运行。你需要先安装 PyCharm,然后再执行以上步骤。 ### 回答2: 在Linux系统中打开pycharm.desktop文件有以下几种方式: 1. 使用文件管理器:首先打开文件管理器(如Nautilus、Dolphin等),然后导航到包含pycharm.desktop文件的目录。找到该文件后,双击打开即可在默认的文本编辑器中查看和编辑。 2. 使用终端命令:打开终端,使用cd命令导航到包含pycharm.desktop文件的目录。然后使用任何文本编辑器(如nano、gedit等)打开该文件。比如,运行以下命令来使用gedit编辑器打开文件: ``` gedit pycharm.desktop ``` 3. 使用命令行工具:打开终端,然后使用命令行工具(如vi、vim等)在终端中打开pycharm.desktop文件。比如,运行以下命令来使用vim编辑器打开文件: ``` vim pycharm.desktop ``` 无论使用哪种方式,一旦成功打开pycharm.desktop文件,你就可以查看和编辑其中的内容了。这个文件通常是一个桌面应用程序的启动器配置文件,你可以在其中配置pycharm的启动命令、图标、名称等信息。 ### 回答3: 在Linux系统中打开pycharm.desktop文件需要按照以下步骤进行操作: 1. 首先,进入文件管理器,导航到保存pycharm.desktop文件的目录。可以使用命令行或是图形界面方式打开。 2. 找到pycharm.desktop文件,右键点击该文件,选择“打开方式”或类似选项(也可能是“属性”),然后选择“文本编辑器”或“其他应用程序”。 3. 如果没有“文本编辑器”选项,请选择“其他应用程序”并浏览到系统中安装的文本编辑器,如Gedit、Mousepad、VS Code等。 4. 在文本编辑器中打开pycharm.desktop文件。 5. 检查pycharm.desktop文件的内容是否被正确解析。该文件应该是一个可执行文件(.desktop文件是用来定义程序启动器的配置文件)。 6. 如果内容正确,可以修改文件设置,例如编辑程序的名称、图标、命令等。修改完成后,保存pycharm.desktop文件。 7. 关闭文本编辑器。 8. 在文件管理器中,找到pycharm.desktop文件,右键点击该文件,选择“设置为可执行”。 9. 接下来,双击pycharm.desktop文件即可打开PyCharm。如果设置正确,PyCharm将启动。 请注意,上述步骤中的某些选项名称可能会因Linux发行版和使用的桌面环境而有所不同。确保选择正确的选项以正确打开并编辑pycharm.desktop文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值