Docker Vim IDE 由博主定制,加入中文环境配置,支持CJK。并升级到最新版本!

Vim Docker

Vim Docker

docker pull bloodstar/vim
alias edit='docker run -ti --rm -v $(pwd):/home/developer/workspace bloodstar/vim' 
edit some.file 
alias edit_update="docker pull bloodstar/vim:latest"

Vim IDE Docker

drop-in

What’s inside:

how to start the daemon(and all containers)

docker create -v '/usr/lib/go' --name go-tools \
'bloodstar/go-tools' '/bin/true'

docker run -v $('pwd'):/home/developer/workspace \
--volumes-from go-tools \
-v ~/.ssh/pub_rsa:/etc/ssh_keys:ro \
-v /etc/localtime:/etc/localtime:ro \
-d -p 80:80 -p 8080:8080 -p 62222:62222 -p 60001:60001/udp \
--name drop-in bloodstar/drop-in

-v /etc/localtime:/etc/localtime:ro - makes tmux display local time

how to connect:

mosh --ssh="ssh -p 62222" -- developer@$<ip> tmux -u

or without host identity check:

mosh --ssh="ssh -o StrictHostKeyChecking=no -p 62222" -- developer@$<ip> tmux -u

Useful Bash scripts

Connect
#!/bin/bash
ip=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' drop-in)
mosh --ssh="ssh -p 62222" -- developer@$ip tmux -u
start the daemon(and all containers)
#!/bin/bash
dtc_id=$(docker ps -a -q --filter 'name=vim-go-tools')
if [[ -z "${dtc_id}" ]]; then
 echo 'vim-go-tools container not found. Creating...'
 docker create -v '/usr/lib/go' --name 'vim-go-tools' \
   'bloodstar/go-tools' '/bin/true'
 echo 'Done!'
fi
echo 'starting daemon...'
docker run -v $('pwd'):/home/developer/workspace \
  --volumes-from vim-go-tools \
  -v ~/.ssh/pub_rsa:/etc/ssh_keys:ro \
  -v /etc/localtime:/etc/localtime:ro \
  -e "GEMAIL=<github email>" \
  -e "GNAME=<github name>" \
  -d -p 80:80 -p 8080:8080 -p 62222:62222 -p 60001:60001/udp \
  --name drop-in bloodstar/drop-in
echo 'Done!'

Vim 中文快查表 <= 戳这里

Tips: 在网页上端导航栏,[快查] => [更多快查表],有更多快查表!
快去看看吧。

Vim

vim速查

Vim简明教程

1. 键位图

vi-vim-cheat-sheet-sch

vi-vim-cheat-sheet-sch

vi-vim-cheat-sheet-sch

vim分为三种主要模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

2. 命令模式

用户刚刚启动 vi/vim,便进入了命令模式。

2.1. 光标移动

按键动作
h 或 向左箭头键(←)光标向 左 移动一个字符
j 或 向下箭头键(↓) 或<Enter>光标向 下 移动一个字符
k 或 向上箭头键(↑)光标向 上 移动一个字符
l 或 向右箭头键(→) 或 <space>光标向 右 移动一个字符
w/W移动到下一个单词,大写把标点符号当做单词的一部分
e/E移动到词尾,大写把标点符号当做单词的一部分
b/B移动到上一个单词,大写把标点符号当做单词的一部分
+光标移动到非空格符的下一行
-光标移动到非空格符的上一行
G移动到这个档案的最后一行
gg移动到这个档案的第一行,相当于 1G
[Ctrl] + f 或 [Page Down]屏幕『向下』移动一页
[Ctrl] + b 或 [Page Up]屏幕『向上』移动一页
[Ctrl] + d屏幕『向下』移动半页
[Ctrl] + u屏幕『向上』移动半页
0 或功能键[Home]数字『 0 』,移动到这一行的最前面字符处
$ 或功能键[End]移动到这一行的最后面字符处
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符

2.2. 复制、粘贴

按键动作
y + 光标移动符复制光标所在到移动范围的内容,例如: yj:复制游标所在的那一整行 yG:复制光标所在到最后一行的内容 yw:复制光标所在到下一个单词的内容
yy复制游标所在的那一行
p在光标后粘贴,如果是单词级的粘贴,就会在光标后一位粘贴,如果是行级的粘贴,就会在光标下一行粘贴,下面的 P 粘贴时同理。
P在光标前粘贴

2.3. 文本修改

按键动作
x向 后 删除一个字符 ,相当于[del]
X向 前 删除一个字符,相当于 [backspace]
d + 光标移动符删除光标所在到移动范围的内容,例如: dj:删除游标所在的那一整行 dG:删除光标所在到最后一行的内容 dw:删除光标所在到下一个单词的内容
dd删除游标所在的那一整行
J将光标所在行与下一行的数据结合成同一行
r + 「字符」替换光标处的单词为该字符
R进入replace mode,直到接收到[Esc]按键信号退出该模式

2.4. 重复动作

按键动作
uUndo,复原前一个动作。
[Ctrl] + r重做上一个动作。
.重复前一个动作。
n向下重复前一个搜寻的动作。
N向上重复前一个搜寻的动作。
「n」+ 命令符「n」是数字,一般可以理解为重复n次该动作,例如: 10j 表示向下移动10行

2.5. 可视模式(vim only)

命令模式下按ctrl + v进入可视模式,这是一个比较特别地模式。

这个模式可以移动光标,选择一大片区域,然后可以对这片区域进行操作。

3. 输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,除了ESC键退出输入模式,其他按键和平常编辑模式是一样的。

3.1. 进入输入模式

按键动作
iInsert,从当前光标前开始输入
IInsert,在目前所在行的第一个非空格符处开始输入
aAppend,从当前光标后开始输入
AAppend,从光标所在行的最后一个字符处开始输入
o在当前光标所在的下一行处输入新的一行
O在当前光标所在处的上一行输入新的一行
c + 光标移动符可以理解先按d + 光标移动符,然后再按a
C可以理解先按dd,然后再按a

4. 底线命令模式

在命令模式下按下:/?键位就进入了底线命令模式。

按ESC键退出底线命令模式。

4.1. 查找替换

语句动作
/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word向上搜索word字符串
:n1,n2 s/word1/word2/gn1 与 n2 为数字。在第 n1 与 n2 行之间将 word1 替换为 word2 。特别地,最后一行为$
:n1,n2 s#word1#word2#g效果同上,这个主要用于替换/符号,例如每一行行首添加//,可以这样操作: :1,$ s#^#//#g

4.2. 文件操作

按键动作
:w [filename]将编辑的数据写入到filename文件中,如果不加参数,默认是当前文件
:w!若文件属性为『只读』时,强制写入该档案,前提是得有文件的写权限。
:q 或 ZQ退出vim,如果未保存的内容,该指令执行失败
:q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:wq 或 ZZ储存后离开
:wq!强制储存后离开
:r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
:! command不退出vim执行command指令,多用于调试脚本。

4.3. 其他功能

按键动作
:set nu显示行号
:set nonu取消行号
:sv当前界面打开文件,并呈纵向分布
:vs当前界面打开文件,并呈横向分布
:set fileformat=unix由Windows上传到linux的脚本文件,直接执行会报错,需要将其由dos文件格式改unix格式

5. 扩展的vim功能

当然,如果仅仅只有原生态的功能还不能让vim成为一个好用的ide,扩展功能才是vim的灵魂所在。

参考


文章作者: 夜法之书
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 夜法之书 !
评论
 上一篇

阅读全文

1.5 万字 CSS 基础拾遗(核心知识、常见需求)
1.5 万字 CSS 基础拾遗(核心知识、常见需求) 1.5 万字 CSS 基础拾遗(核心知识、常见需求)
1.5 万字 CSS 基础拾遗,覆盖核心知识、常见需求。雄文推荐!本篇文章围绕了 CSS 的核心知识点和项目中常见的需求来展开。虽然行文偏长,但偏基础,适合初级中级前端阅读,阅读的时候请适当跳过已经掌握的部分。
2021-09-15
下一篇 

阅读全文

深度学习之视频人脸识别系列
深度学习之视频人脸识别系列 深度学习之视频人脸识别系列
深度学习之视频人脸识别系列,介绍了人脸识别领域的一些基本概念,分析了深度学习在人脸识别的基本流程,并总结了近年来科研领域的研究进展,最后分析了静态数据与视频动态数据在人脸识别技术上的差异。
2021-09-14
  目录