如何提高程序员的键盘使用效率?

前言:

    本文为高网第一次作业,主要总结了能帮助程序员提高学习工作效率的几个小方法,以及整理了windows常用快捷键,vim入门文档,各种常用开发工具,如果有整理错误欢迎联系更正。

 

 

一些提升效率的建议:

  • 指法用对,练习盲打,提升敲击数字键的成功率
  • 熟悉你的开发工具,各种 IDE 或者编辑器快捷键。vim 等高度定制的编辑器允许你按照自己的习惯修改快捷键
  • 学习一门脚本语言(编写自动化脚本),编写你的命令行工具(一个可执行的 python 文件放到 bin 下就是一个命令行工具)
  • 多用键盘快捷键少用鼠标。修改系统键盘按键,比如 capslock 使用频率比较低,一般我改成了 ctrl 键,因为用开发工具频繁使用到 ctrl,改成 ctrl 之后效率提高不少,小指头也不疼啦。
  • 自动化(比如监听文件变动刷新浏览器、重启http服务等)
  • 用好终端和命令行工具

打字速度练习:

  • https://typing.io/
  • https://www.keybr.com/
  • http://www.speedcoder.net/

chrome开发者插件:

  • vimium: chrome 插件,可以用 vim 的方式操作浏览器,很方便,不用鼠标也能完成大部分操作。更强大替代品:SurfingKeys, Cvim
  • FE助手:前端插件,Json 格式化等很多有用的工具
  • Octotree: Chrome github 浏览插件,可以把 github 项目的目录树结构展示出来,非常方便
  • Github Hovercard: 可以在浏览 github 的时候展示一些链接信息,比如可以查看作者的个人页
  • Momentum: 美化 Chrome 界面的插件,有很多漂亮的图片
  • Onetab: 用来整合 chrome tab到一个页面,如果打开了太多窗口特别占用资源的时候可以使用
  • [LGTM](https://chrome.google.com/webstore/detail/lgtm/oeacdmeoegfagkmiecjjikpfgebmalof): 有些开发过程中,需要一个同事review 代码后评价 LGTM(Looks Good To Me)才能 merge 代码,这里是图片版的 LGTM

程序员常用开发工具总结:

  • Pycharm。专业的python IDE,功能很强大,特别喜欢它的代码merge工具,不想被编辑器折腾死的推荐直接使用,五星级推荐。(除了内存占用大点)。如果你不喜欢折腾编辑器,请直接用 IDE。
  • vim。本人比较喜欢的编辑器,平常写代码、博客、文档等使用频繁,配上各种插件编辑效率很高。http://vimawesome.com/ 可以到这个上面安装排名靠前的那些插件,能够大大提高编辑效率,部分替代IDE。其他优秀的编辑器sublime,atom,vscode,emacs等根据个人喜好来吧,不过vim等终端友好的编辑器方便在服务器上直接写代码,和本地体验一样,缺点就是补全和跳转支持不完善,对新人不友好,也可以 Pycharm 和 vim插件配合。(在google搜索python awesome等可以在github上搜索到一些awesome项目,总结了该语言很多技术工具)。网上还有很多牛人开源了自己的 dotfiles,我们可以参考下别人的 vimrc 配置。
  • neovim: 新时代的 vim,我在这个配置(https://github.com/PegasusWang/vim-config)上自定义了自己的配置,使用起来性能和反应速度上远超原生的老古董 vim。
  • ranger: 用 vim 的方式管理文件,替代 mac 下难用的 finder。
  • oni: https://github.com/onivim/oni/ 构建在 neovim 上的 IDE。还有 VimR 等项目。
  • meld/vimdiff/kdiff3: 跨平台的文件对比和冲突合并工具。
  • tmux/tmuxp。比screen好用,可以用来分屏,托管进程等,服务器端必备神器,ubuntu下基本就不用使用terminator之类的分屏工具了。最近看youtube视频还发现有人在服务器上使用tmux和vim结对编程,两个人同时attach到一个session里,基情四射。
  • wemux: tmux 共享,https://github.com/zolrath/wemux
  • sshfs: 本地挂在服务器文件夹
  • tmate: https://tmate.io 终端共享工具,结对编程。很多现代化编辑器 vscode, atom 提供结对编程的插件。
  • asciinema: 终端会话记录工具。https://asciinema.org/ 可以用来录制终端演示操作,而不用录屏。
  • oh-my-zsh。替代原生的bash shell,提供了好多方便的特性和漂亮主题,支持插件比如 zsh autocomplete。linux/mac下vim+tmux+zsh简直是绝配,甚至可以直接在服务器上方便地撸代码,跟本地开发体验没区别。
  • item2(mac)。替代原生的终端。https://medium.com/@RyanDavidson/make-your-terminal-more-colourful-and-productive-with-iterm2-and-zsh-11b91607b98c
  • brew(mac)。类似ubuntu下的apt-get,可以方便安转各种软件和工具。
  • Alfred(mac): mac 下一款功能强大的工具,不过我一般只用它快速打开软件(比如直接输入app名前缀快速切换不同app)。可以用 python 编写一些自己的 workflow 提高效率(https://github.com/deanishe/alfred-workflow),比如把时间戳转成日期等。 https://github.com/derimagia/awesome-alfred-workflows
  • Dash(mac): 强悍的文档查询工具。支持非常多编程语言和框架。windows 和 linux 可以用 Zeal。或者 https://devdocs.io/
  • devdocs.io: 文档查询工具
  • Karabiner-Elements(mac): 改键工具 https://github.com/tekezo/Karabiner-Elements 也可以用来禁用内置键盘(mac自带修改capslock为 control)
  • autojump。方便在命令行里来回跳转目录。
  • Magnet/chunkwm/Amethyst 窗口管理辅助工具,拖拽窗口到屏幕边缘可以自动半屏, 全屏或者四分之一屏幕,还可以设定快捷键完成分屏,现在已经离不开magnet 分屏了。
  • tldr: 更好的man手册。linux 命令很多,而且linux 的 man 手册比较难用,可以用这个 tldr 替代。https://github.com/tldr-pages/tldr
  • EditorConfig: http://editorconfig.org/ 用来统一编辑器配置。如果成员用不同的操作系统和编辑器,建议使用。尤其是对于 python 这种使用缩进的语言

 

数据库开发工具:

  • mycli: mysql 命令行补全等。https://github.com/dbcli/mycli
  • MysqlWorkbench/Sequel Pro: mysql 客户端工具。
  • Navicat Premium: 强大的数据库管理工具,收费
  • Medis: redis client 工具
  • MongoChef: Mongodb 客户端工具
  • gen: 根据 mysql 生成 golang gorm model。https://github.com/smallnest/gen
  • sqlacodegen: 从 mysql 生成python sqlalchemy model定义。https://github.com/agronholm/sqlacodegen

 

Windows常用快捷键整理:

Win+L:快速锁屏

Win+E:打开「我的电脑」

Win+D:进入桌面

Win+← \ →:分屏操作

Win+↓\↑:窗口最小化\最大化切换

Win+空格:切换多个输入法

Win+I:打开Windows设置

Ctrl+Shift+T:恢复被误删掉的网页

Shift+Delete:永久删除

Shift+Ctrl+Esc:打开任务管理器

Alt+Tab:快速切换窗口

  

Vim学习文档

学习 VIM 最好的文档,应该是阅读学习 VIM 的帮助文档,这里先讲一下如何使用 VIM 的帮助文档 :终端输入 vim , 敲击回车键(enter/return) ,就会进入 VIM , 然后键盘上输入 :help 。

VIM 有四个模式:

1)正常模式 (Normal-mode)

  • 正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。这时击键时,一些组合键就是 vim 的功能键,而不会在文本中键入对应的字符。
  • 在这个模式下,我们可以通过键盘在文本中快速移动光标,光标范围从小到大是字符、单词、行、句子、段落和屏幕。启动 VIM 后默认位于正常模式。不论是什么模式,按一下  键 ( 有时可能需要按两下,插入模式按一下 Esc ,就会切换到正常模式,命令模式或者可视模式下执行完操作以后,就会自动进入正常模式,如果进入命令模式或者可视模式没有执行任何操作,按两下 Esc 即可 )都会进入正常模式。
  • 插入模式 (Insert-mode)
    • 在正常模式中按下个别字母键,会进入插入模式,例如按 i 键会进行插入模式。该模式启动以后,就会进入编辑状态,通过键盘输入内容。
    • 命令模式 (Command-mode)
      • 在正常模式中,按下:(冒号)键或者/ (撇号),会进入命令模式。在命令模式中可以执行一些输入并执行一些 VIM 或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。
      • 可视模式 (Visual-mode)

在正常模式按下v, V, +v,可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

 

一个好的编辑器我们无非就使用它的两个功能:

1)通过一些快捷键操作编辑器实现我们的功能:复制,黏贴,删除,查询等

2)我们用来编辑,输入内容进入编辑器。

 

VIM 有一个很重要的按键需要一开始就做出说明,那就是键盘中的 ,这个按键用来切换模式,该按键可以快速切换到正常模式.

VIM 有一个配置文件,在 linux 系统中,该配置文件是 .vimrc , 该文件位于 ~ 目录下面 ,是一个隐藏文件,如果该文件不存在可以手动创建一个。

.vimrc 可以有很多配置,例如显示行号,快捷键配置,插件配置等等。VIM 很多个性化的设置都离不开这个配置文件。zempty 认为 .vimrc 有一个特别重要的配置,那就是配置如下的一行:

 #将ESC键映射为两次j键                                     

inoremap jj

 

用 VIM 打开文件

打开一个文件:vim file1

打开多个文件:vim file1 file2

该方式打开文件,显示屏默认显示第一个文件也就是 file1,如何进行文件间的切换呢?VIM 的正常模式下按下键盘上的冒号 这时会在显示屏底部出现冒号 (进入了 VIM 的命令模式),然后在输入 ls 屏幕上会出现打开的所有文件的序号和文件名,我们继续输入冒号  ,然后输入 bn (这里的 n需要做一个解释并不是键盘上的 n ,而是文件序号的代指,如 b1 代表显示屏上切换到第一个文件,b2 代表显示屏上切换到第二个文件)。

:ls

上面这个命令将会列出 VIM 打开的所有文件。

:b2

上面的这个命令将会在显示屏上显示第二个文件。

分屏操作:

左右分屏如下操作:

vim -On file1 file2 ... filen

这里的 n ( n 是要打开的具体文件的数目:1,2,3 ...)是代表有几个文件需要分屏,从左至右依次显示 n 个文件。

 

上下分屏如下操作:

vim -on file1 file2 ... filen

这个命令跟上一个命令不同的是其中的参数 -on( n 是要打开的具体文件的数目:1,2,3 ...) 中的 o 是小写,这样将会上下依次显示 n 个文件。

请记住一个重要的组合键 Ctrl + w ,操作分屏离不开这个组合键(这里的组合键可没有 + ,只是 Ctrl 和 w 组合实现一个动能,下文谈到的组合健都这样描述 )。

按住组合键 Ctrl + w ,然后在按下 s Ctrl + w s上面这个命令将会上下分割当前打开的文件。

 

按住冒号,紧接着输入 sp ,在键入文件名,如下:

:sp file,上面的这个命令将会上下分割当前文件和新打开的 file 。

 

按住组合键 Ctrl + w ,然后在按下 v,Ctrl +w v上面的这个命令将会左右分割当前的文件

 

按住冒号 ,紧接着输入 vsp ,在键入文件名称,如下:

:vsp file,上面的这个命令将会左右分割当前打开的文件和新打开的文件 file 。

分屏以后如何在文件间切换光标,和移动分屏?

1.切换左右分屏的光标 :Ctrl + w h

将当前光标定位到左边的屏幕:Ctrl + w l

2.移动左右分屏 :Ctrl + w H

将当前的分屏移动到左边:Ctrl + w L

3.切换上下分屏的光标 :Ctrl + w j

将当前的光标移动到下面的分屏:Ctrl + w k

将当前光标移动到上面的分屏

·VIM 的退出

VIM 的最终操作就是 VIM 的退出,如何进行 VIM 的有效退出呢?下面针对 VIM 的退出来做一下说明:

 

:w     保存当前对文件的修改,但是不退出文件。

:w!    强制保存但是不退出文件。

:w file    保存当前的文件修改到 file 文件当中。

:q!    退出文件,对文件的修改不做保存。

:qa!       退出所有的文件,对所有的文件修改都不做保存。

:wq        退出文件并保存对文件的修改。

:x     退出文件并保存对文件的修改。

:e file       打开另一个文件。

:e!    放弃对文件的所有修改,恢复文件到上次保存的位置。

:saveas file      另存为 file。

:bn 和 :bp     当打开多个文件的时候可以输入 :bn 和 :bp 进行上一个文件或者下一个文件的切换。

以上的命令都是在命令行模式下的操作(也就是输入冒号 紧接着输入相应的字符命令如 :q! 就会执行退出操作)。 zempty 在这里要推荐一个常用的操作就是 ZZ , 当你对文件进行了修改,需要保存退出,那么可以在键盘上快速的键入两个大些的 Z (ZZ),这样文件就会快速的保存退出了。

·VIM 的输入模式

编辑器的主要功能就是输入文本,编辑文本,很多编辑器在打开文件的时候就可以通过键盘录入文字,但是 VIM 有稍许的不同,刚刚接触 VIM 的时候是很难对 VIM 进行编辑操作的,记得我在刚接触它的时候是很崩溃的(千万个草泥马在内心奔腾),但是你接触久了,了解的多了,也就理解如此设计的美妙之处。

 

如何使用 VIM 编辑文本?

 

这里有必要再强调一下,在使用 VIM 打开文件的时候,这时候的状态是正常模式(Normal-mode),请务必记住这个模式,如果你不确定当前是否处在正常模式,请连续按两下键盘上的 jj (这个 jj 需要读者去做相应的配置,上文有做过讲解),VIM 处理编辑文本需要从正常模式(Normal)切换到插入模式(Insert-mode),进入插入模式的时候你应该会在屏幕底部看到 INSERT 的提示,这时候就可以编辑文本了。

 

如何从正常模式进入插入模式呢?

 

请记住下面几个常用启动录入文本的键盘字符 i,I,a,A,o,O,s,S 。

 

i是在光标所在的字符之前插入需要录入的文本。

 

I 是在光标所在行的行首插入需要录入的文本。

 

a 是在光标所在的字符之后插入需要录入的文本。

 

A 是在光标所在行的行尾插入需要录入的文本。

 

o 是光标所在行的下一行行首插入需要录入的文本。

 

O 是光标所在行的上一行行首插入需要录入的文本。

 

s 删除光标所在处的字符然后插入需要录入的文本。

 

S 删除光标所在行,在当前行的行首开始插入需要录入的文本。

 

还有一个可能经常用到的就是 cw ,删除从光标处开始到该单词结束的所有字符,然后插入需要录入的文本(这个命令是两个字符的合体 cw )。

·VIM 的命令模式

关于命令模式上文有提到过,下面主要来列举几个常用的命令模式操作(命令输入完以后,需要按下 Enter 键去执行命令):

文本的行号设置最好不要设置在配置文件中(因为复制文件的时候行号的出现会很麻烦),在命令行实现就好。

:set nu       该命令会显示行号。

:set nonu     该命令会取消行号。

:n     定位到 n 行。

VIM 进行关键字的查找。

/{目标字符串}

如:/zempty 会在文本中匹配 zempty 的地方高亮。

查找文本中匹配的目标字符串,查到以后,输入键盘上的 n 会去寻找下一个匹配,N 会去寻找上一个匹配。

 

VIM 处理大小写的区分

 

:set ic       编辑器将不会区分大小写,如果你进行该设置之后,进行关键字查询如 /zempty 如果文本中有 Zempty ,zEmpty,....,只要是字符相同不会区分大小写都会进行匹配。

:set noic

VIM 删除多行文本

:n1,n2d       n1 和 n2 指的是起始行号和结束行号,d 是删除关键字

VIM 处理文本的替换

:{作用范围}s/{目标}/{替换}/{替换的标志}

作用范围分为当前行、全文、选区等等。

:s/zempty/handsome/g     将会把当前光标所在行的 zempty 替换成 handsome

 

:%s/zempty/handsome/g       将会把全文中的 zempty 替换成 handsome

 

:n1,n2s/zempty/handsome/g       这里的 n1 和 n2 值得是行号,将会替换掉 n1 到 n2 的所有 zempty 为 handsome.

选区,在可视模式下选择区域后输入 : ,VIM 会自动补全为 :'<,'>

:'<,'>s/zempty/handsome/g

这个操作咋一看起来有点懵逼,这个操作是可视模式 (Visual-mode) 下选区中的替换操作(可视模式下文会谈到),可视模式下输入会自动补全 :'<,'> 这个是可视范围下的操作范围,类似于 % 和 n1,n2,代表操作的文本范围,上面的例子就是替换掉可视区域的 zempty 为 handsome。

下面来谈谈替换的标志。

上文中命令结尾的 g 即是替换标志之一,表示全局 global 替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现

:s/zempty/handsome

作用于当前行,从光标处开始查找替换,仅仅替换第一次匹配 zempty 的地方为handsome 。

 

:%s/zempty/handsome

替换掉文件中所有行第一次出现 zempty 的地方为 handsome 。

i 表示大小写不敏感查找,I 表示大小写敏感:

:%s/zempty/handsome/i

替换掉所有行第一个出现 zempty (不区分大小写) 为 handsome 。

:%s/zempty/handsome/gi

替换掉所有行出现 zempty (不区分大小写) 为 handsome 。

·VIM 执行 Linux 命令

:!command

: 后面紧跟着 ! ,! 后面紧跟着 linux 命令( command 指操作 Linux 系统的一系列命令,如创建文件,新建文件夹,查询文件的属性的等),例子如下,

:!date,执行 date 命令显示时间,执行完命令以后按下键盘上的 Enter 就会返回到文件。

·VIM 执行命令,并且添加结果至操作文本光标处

:r !command

: 后面紧跟着 r , r 后面是空格,紧接着是 !command( command 解释同上),例子如下,:r !date,执行 date 命令显示时间,并且添加命令结果到文本中。

·VIM 的正常模式(Normal-model)

VIM 正常模式下,主要进行的操作有光标的移动,复制文本,删除文本,黏贴文本等。

·快速移动光标

请记住这几个快捷键 h,j,k,l 这几个按键主要是用来快速移动光标的,h 是向左移动光标,l 是向右移动光标,j 是向下移动光标,k 是向上移动光标,h , j , k ,l 在主键盘区完全可以取代键盘上的 ↑ ,↓ ,← , → 的功能。

·在当前行上移动光标

0 移动到行头

^ 移动到本行的第一个不是 blank 字符

$ 移动到行尾

g_ 移动到本行最后一个不是 blank 字符的位置

w 光标移动到下一个单词的开头

e 光标移动到下一个单词的结尾

fa 移动到本行下一个为 a 的字符处,fb 移动到下一个为 b 的字符处

nfa 移动到本行光标处开始的第 n 个 字符为 a 的地方(n 是 1,2,3,4 ... 数字)

Fa 同 fa 一样,光标移动方向同 fa 相反

nFa 同 nfa 类似,光标移动方向同 nfa相反

ta 移动光标至 a 字符的前一个字符

nta 移动到第二个 a 字符的前一个字符处

Ta 同 ta 移动光标方向相反

nTa 同 nta 移动光标方向相反

·跨行移动光标

nG 光标定位到第 n 行的行首

gg 光标定位到第一行的行首

G 光标定位到最后一行的行首

% 匹配括号移动,包括 ( , { , [ 需要把光标先移动到括号上

* 和 # 匹配光标当前所在的单词,移动光标到下一个(或者上一个)匹配的单词( * 是下一个,# 是上一个)

·翻页操作

 

ctrl+f 查看下一页内容

ctrl+b 查看上一页内容

·VIM 的复制,黏贴 ,删除

三个重要的快捷键 d , y , p

d 是删除的意思,通常搭配一个字符 ( 删除范围 ) 实现删除功能,常用的如下:

dw 删除一个单词

dnw 删除 n 个单词,

dfa 删除光标处到下一个 a 的字符处( fa 定位光标到 a 处 )

dnfa 删除光标处到第 n 个 a 的字符处

dd 删除一整行

ndd 删除光标处开始的 n 行

d$ 删除光标到本行的结尾

dH 删除屏幕显示的第一行文本到光标所在的行

dG 删除光标所在行到文本的结束

y 是复制的意思,通常搭配一个字符(复制范围)实现复制的功能,常用的如下:

yw 复制一个单词,还有 ynw

yfa 复制光标到下一个 a 的字符处,还有ynfa

yy 复制一行,还有 nyy

y$ 复制光标到本号的结尾

yH 复制屏幕显示的第一行文本到光标所在的行

yG 复制光标所在行到文本的结束

p ,P是黏贴的意思,当执行完复制或者黏贴的命令以后,VIM 会把文本寄存起来。

p 在光标后开始复制

P 大写的 P 光标前开始复制

·撤销操作和恢复

u 撤销刚才的操作

ctrl + r 恢复撤销操作

·删除字符操作和替换

x 删除光标当前所在的字符

r 替换掉光标当前所在的字符

R 替换掉从光标开始以后的所有字符,除非  退出,或者 jj (代替 上文有提到)退出。
·VIM 可视化模式(Visual-mode):v,V,Ctrl+v
    v字符可视化,按下键盘上的v以后,屏幕底部应该会有一个 VISUAl 的提示,操作 h,j,k,l就选中文本,继续按 v 退出可视化模式。
    V 行可视化,按下键盘上的 V 以后,屏幕底部应该有一个 VISUAL LINE 的提示,操作 j,k 可以向上或者向下以行为单位选中文本,继续按下 V 退出可视化模式。
    Ctrl+v 块状可视化,按下键盘上的 Ctrl+v 以后,屏幕底部应该会有一个提示 VISUALBLOCK ,可以通过 h,j,k,l 块状的操作选择区域,这是很多编辑器都不可以做到的,继续按下 Ctrl+v 会退出可视化模式。
·可视化模式下操作文本
    可视化模式下选择操作区域以后,按下 d会删除选择的区域,按下 y 会复制选择的区域,按下 p 会黏贴选择的区域。
块区域下的特殊操作:
Ctrl+v 选中块区域以后,按下大写的 I 或者 A 可以在区域的前面或者后面输入内容,按下 jj 或者 ,可以看到选中的区域前面或者后面会有输入的内容。
·VIM 的代码提示功能:
    在编辑模式下 ,快捷键 Ctrl+n 或者 Ctrl+p 会有代码提示功能,我们可以实现快速录入的效果。

你可能感兴趣的:(如何提高程序员的键盘使用效率?)