vim按键映射修改
这篇文章写的时候还比较喜欢vim,现在觉得在windows下使用vscode remote更香一点,想一想还是挂上来。
在Linux内核的系统下,IDE的选择和Windows有所不同。虽然有很多强大的IDE同样支持Linux版本,但是考虑到服务器等没有图形化界面的应用情景,vim这一基于命令行,如瑞士军刀般好用的工具还是会配上用场(Emacs也比较好用,不过笔者更喜欢vim)。
但是vim相较于现代IDE而言还是过于古老,对于一个没有更改过的vim还是比较低效的。这里记录一些常用的按键映射,自定义快捷键,在输入部分内容时可以自动补全,或是创建文件时添加头部信息。这样不仅让vim使用更方便一些,更换系统时也不用重新配置一遍,直接替换配置文件即可。配置文件放置于用户根目录下。
部分设置参考网上大佬的博客,覆盖面算是很全面了。
命令模式下输入set可以查看所有可设置的选项
在用户家目录(~)下创建名为.vimrc的文件,将以下内容复制到文件中。文件转移的话,vim中命令模式下ggVG+y全选复制,V为进入可视模式。
"/*************************************************************************
" > File Name: .vimrc
" > Author:passacaglia
" > Mail: 1143703334@qq.com
" > Created Time: 2021年09月20日 星期一 15时15分34秒
" ************************************************************************/
syntax on
set background=dark
set confirm
"set cursorline " 突出显示当前行
set laststatus=2 " 显示状态栏
set ruler " 打开状态栏标尺
set autoindent
set nowrapscan " 禁止在搜索到文件两端时重新搜索
set incsearch " 输入搜索内容时就显示搜索结果
set hlsearch " 搜索时高亮显示被找到的文本
set noerrorbells " 关闭错误信息响铃
set cmdheight=1 " 设定命令行的行数为 1
set foldmethod=syntax " 设置语法折叠
set foldcolumn=0 " 设置折叠区域的宽度
setlocal foldlevel=1 " 设置折叠层数为
" set foldclose=all " 设置为自动关闭折叠
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
" 用空格键来开关折叠
"style
set tabstop=4 "tabkey width
set nu
set softtabstop=4
set shiftwidth=4
"selectable,multiple language environment
if has("multi_byte")
set encoding=utf-8
set termencoding=utf-8
set formatoptions+=mM
set fencs=utf-8,gbk
endif
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y
"此部分是插入模式下的映射
:inoremap { {<CR>}<ESC>O
:inoremap ( ()<ESC>i
":inoremap ) <c-r>=ClosePair(')')<CR>
":inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
":inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
"允许插件
filetype plugin on
"共享剪贴板
set clipboard=unnamed
"function
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.py exec ":call SetTitle()"
func SetTitle()
if &filetype == 'sh'
call setline(1,"\#########################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+1, "\# Author: passacaglia")
call append(line(".")+2, "\# mail: 1143703334@qq.com")
call append(line(".")+3, "\# Created Time: ".strftime("%c"))
call append(line(".")+4, "\#########################################################################")
call append(line(".")+5, "\#!/bin/bash")
call append(line(".")+6, "")
elseif &filetype == 'c' || &filetype == 'cpp' || &filetype == 'h'
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: passacaglia")
call append(line(".")+2, " > Mail: 1143703334@qq.com ")
call append(line(".")+3, " > Created Time: ".strftime("%c"))
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
elseif &filetype == 'py'
call setline(1,"#########################################################################")
call append(line("."), "# File Name: ".expand("%"))
call append(line(".")+1, "# Author: passacaglia")
call append(line(".")+2, "# mail: passacaglia@88.com")
call append(line(".")+3, "# Created Time: ".strftime("%c"))
call append(line(".")+4, "#########################################################################")
call append(line(".")+5, "")
endif
if &filetype == 'cpp'
call append(line(".")+6, "#include<iostream>")
call append(line(".")+7, "using namespace std;")
call append(line(".")+8, "")
endif
if &filetype == 'c'
call append(line(".")+6, "#include<stdio.h>")
call append(line(".")+7, "")
endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
其中,这个表示回车符:
<CR>
在上方SetTitle函数的Author和Mail字符串中将作者名和邮箱改成自己的即可。
实际上暂时只支持C/C++、shell和python的内容,毕竟java等跨平台又主要用来写大工程的语言也没有在无图形化的linux下硬写的必要,主要适用于小文件场景。
vscode remote配置
在Windows/Mac系统下可以通过vscode的插件远程连接Linux服务器,从而在图形化界面下编写代码。vscode才是永远的神好吧,没有实不现的功能,只有找不到的插件→_→
打开vscode,下载这个插件:
原理就是基于SSH连接。ctrl+shift+p打开设置输入Remote-SSH找到这个插件,先选择其中的“Connect to Host…”选项,再选择”Configure SSH Hosts…”选项,最后选择config文件,我这里是这样:
在这里按格式设置Host名(可任意)、HostName(远程主机ip)、User(登录的用户名)。填好后在左边的远程资源管理器中就会出现相应的主机了,可直接连接:
选择一个窗口作为连接后的界面,连接后,选择一个目录,会建立工作区,在这个界面打开终端会是远程主机的终端。SSH连接默认使用22号端口,请保证远程主机的端口打开。此外,在此窗口打开终端,是远程主机的终端。
如果有任何有错误或不够清晰的表达,欢迎邮件至 passacaglia@88.com,谢谢!