阿毛的编程工具

编辑器vscode

随便用一个主流代码编辑器写一个简单的hello world程序只需要一分钟,但是如果说可能要先花好几天搭建好vim环境才能写出hello world,恐怕大多数读者不会去多看一眼vim。vim的安装过程极可能遇到各种问题(如centor上安装),也可能一切顺利啥事也没有(如ubuntu上安装)。但遇到的问题极大概率都归结到gcc、python版本等常见问题。如果有志于后端开发,不再vim这里遇到,以后在其它地方也是会碰到,也是要学会如何解决。

然而,本文并不是为了介绍如何搭建vim编辑环境,也不是为了介绍如何通过配置让vim看上去更加炫酷。实质上,vim过于折腾,我并不主张用vim作为主力编辑,但vim所倡导的扔掉鼠标,通过高效的键盘快捷键完成代码编辑的理念,非常值得学习。

把以,笔者对编辑器有一个要求:否支持vim是首要考虑条件

不同的开发目标,会选择不同的编辑器。如专门针对Web开发的WebStorm和eclipse;针对Windows软件开发的Visual Studio;Unity3D早期的MonoDevelop;插件开放的VSCode和Sublime;甚至还有针对某种特定语言的编辑器,如Lua语言的ZeroBrane。

笔者主要从事手机游戏开发工作,经常需要切换开发前/后端工程、远程管理后端linux服务器。主要语言是lua、c/c++、shell和js 总的来说,手机游戏开发目前并没有像web应用开发那样成长出,一套固定的的开发方案,暂不存在像WebStorm、Visutal Stdio级别的专门在游戏领域的编辑器。

所以,插件式的编辑器,最能满足笔者的需求

主流的插件式两款编辑器vscode和Sublime,笔者的本地游戏服跑在window subsystem for linux,选择vscode达到与windows系统间的无缝联动的优势,令工作更有效率。

必备的vscode插件

  • vim 扔掉鼠标,实现代码在键盘上的高效跳动
  • select-highlight-cochineal-color 在局部的视野范围内,突出显示标识符号的使用位置,高效阅读代码
  • Todo Tree 标记编码过程中的瞬间灵光,回过头来补充实现

常用vim指令

部分人嫌弃vim是因为看到一大堆快捷键指令被吓着,然而这大可不必担心,从小入大,先掌握十几个高频指令就能顺利面对大部分情境。如光标上下左右移动,删除/复制/粘贴字符,上下翻滚页面,行首/尾跳转,跨行跳转。对于其它的指令像录像、打标签等,笔者觉得有空去翻翻有个大概记忆,实际写代码时回头想想是不是有指令/组合指令会让编码更加高效。

不可避免的是,vim本身的指令与vscode有按键冲突,笔者遇到的影响日常操作习惯的:

  • ctrl+f在vim中是翻页,不是vscode的在当前文件查找
  • 在vim里ctrl+c,并不能复制到系统粘贴板。这和(vim寄存器)(https://harttle.land/2016/07/25/vim-registers.html)有关,需要用到特殊的指令
  • ctrl+d是vscode用来多选相同的标识符,但在vim里下移半屏

遇到冲突不用慌,完全是可以解决的。你即可以在vim插件提供的配置vim.handleKeys中修改这些按键的优先级,又或者直接在vscode的Keyboard Shortcuts避开这些冲突

远程工具ConEmu

putty功能过于简单可玩性极低,xshell、SecureCRT灵活定制性很高但是要收费,而window terminal使用体验并不觉得很好,并且可玩并不高。最选择笔者选择开源的ConEmu,大名鼎鼎的cmder核心就是用了ConEmu(见cmder wiki)。没选择cmder的理由是,对于笔者的需求来说,功能足够简单即可。

窗口启动命令

Create new console可以指定启动命令,并且在下拉列表保留了近期命令的历史记录。 如使用远程登录ssh -t root@192.168.56.102 "exec $SHELL -l"

窗口布局

Create new console启动新页签的同时可以指定分屏参数,还可以通过光标拖拉每个分屏视窗大小。如果想保存视窗布局,可以在Settings->Starup->Tasks,增加一项task配置,点击Active tabs按钮将当前视窗应用到该task配置中。在右上角的+号下拉列表中,选择对应的task则可以重新打开布局 构建布局 保存当前布局 打开布局

切换窗口焦点

ConEmu切换焦点快捷键定义在Settings->Keys&Marco->Keyboard的配置中,这里介绍两方法:

  1. 跳转到指定编号的页签Activate console by number (may be disabled)的系列键位
  2. 上下左右方向的跳转Split: Put focus to nearest pane upward: Split(2,0,-1)Split: Put focus to nearest pane downward: Split(2,0,1)Split: Put focus to nearest pane leftward: Split(2,-1,0)Split: Put focus to nearest pane rightward: Split(2,1,0)

笔者偏好使用后者,调整键位来达到类似vim jkhl的使用习惯。即,组合其它按键如alt+j,k,h,l来控制4个方向的跳转

task配置ssh远程登录

上面提到利用ConEmu的task配置来保存布局,task不仅仅用来布局。实际布局是用到了ConEmu提供的-cur_console:命令,配合参数s或者ns来是控制水平或者垂直分屏(文档说明)。另外根据说明,我们可以紧接这个指令后面执行bat。如下例,让上面的3个视窗,都进行ssh远程并切换到远端的工作目录到/root/d/ufk_server。例子中ssh是密钥登录,此处不赘述。 修改前

-cur_console:d:C:\Users\amao-ww cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd"

> -cur_console:s1T60H -cur_console:d:C:\Users\amao-ww cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd"

-cur_console:s2T40V -cur_console:d:C:\Users\amao-ww cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd"

修改后

-cur_console:d:C:\Users\amao-ww ssh -t root@192.168.56.102 "cd /root/d/ufk_server && exec $SHELL -l"

> -cur_console:s1T60H -cur_console:d:C:\Users\amao-ww ssh -t root@192.168.56.102 "cd /root/d/ufk_server && exec $SHELL -l"

-cur_console:s2T40V -cur_console:d:C:\Users\amao-ww ssh -t root@192.168.56.102 "cd /root/d/ufk_server && exec $SHELL -l"

修改后的图样 执行task

原文:
https://lizijie.github.io/2023/03/04/%E9%98%BF%E6%AF%9B%E7%9A%84%E7%BC%96%E7%A8%8B%E5%B7%A5%E5%85%B7.html
作者github:
https://github.com/lizijie

PREVIOUSskynet中debug_console性能参数说明
NEXTluacheck配置参数说明