vim映射修改&vscode remote配置

  1. vim按键映射修改
  2. vscode remote配置

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才是永远的神好吧,没有实不现的功能,只有找不到的插件→_→
20220305115520

打开vscode,下载这个插件:
20220307193140

原理就是基于SSH连接。ctrl+shift+p打开设置输入Remote-SSH找到这个插件,先选择其中的“Connect to Host…”选项,再选择”Configure SSH Hosts…”选项,最后选择config文件,我这里是这样:
20220307193812
20220307194034
在这里按格式设置Host名(可任意)、HostName(远程主机ip)、User(登录的用户名)。填好后在左边的远程资源管理器中就会出现相应的主机了,可直接连接:
20220307194133
选择一个窗口作为连接后的界面,连接后,选择一个目录,会建立工作区,在这个界面打开终端会是远程主机的终端。SSH连接默认使用22号端口,请保证远程主机的端口打开。此外,在此窗口打开终端,是远程主机的终端。


如果有任何有错误或不够清晰的表达,欢迎邮件至 passacaglia@88.com,谢谢!

文章标题:vim映射修改&vscode remote配置

字数:1.5k

本文作者:Passacaglia

发布时间:2022-03-04, 15:05:50

最后更新:2022-03-29, 10:16:06

原始链接:https://passacaglia424.github.io/2022/03/04/vim%E6%98%A0%E5%B0%84%E4%BF%AE%E6%94%B9%E5%92%8Cvscoderemote%E9%85%8D%E7%BD%AE/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。