热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CLIfe:我的高效开发环境配置

在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如BorlandDelphi和MicrosoftVisualStudio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。

像许多其他人一样,我已经开始使用大型,强大,笨拙的IDE进行编程之旅。 我曾经使用过Borland Delphi,MS VS,Netbeans,Eclipse,IntelliJ IDEA等。随着时间的流逝,我更多地涉足Web开发,因此我选择了更简单的选项。 一段时间以来,我选择的编辑器是Sublime Text 。 大约三年前,我已经完全迁移到Vim , Tmux和其他非GUI工具,到目前为止,我已经完全爱上了它们!

有两件事触发了迁移。 首先,在我的新工作中,我们所有人都有用于远程工作的笔记本电脑,但是大部分开发工作都是在办公室中功能强大的固定工作站上进行的。 在不稳定的互联网连接上使用SSHFSVNC 麻烦很多 ,因此我需要一个更好的选择。 其次,我正在做越来越多的DevOps这类工作,这需要我每天在数十台远程计算机上编辑文件,而Vi是世界上唯一可用的编辑器。 切换到Vim为我解决了这两个问题,在我发现了人体工程学和插件生态系统之后 ,我完全放弃了Sublime作为我的主要编辑器。 最近,我注意到越来越多的人在看到我的屏幕时询问我的设置,因此我决定在博客文章中分享它。

安装Neovim

Neovim是一个雄心勃勃的项目, 旨在从头开始重构27岁的Vim代码库。 您可以在此处阅读有关他们愿景的更多信息。
根据操作系统的不同,安装Neovim的方法有所不同,因此最好参考原始指南 。 从这里开始,我假设使用Ubuntu 18.04 ,但是大多数配置将独立于操作系统,只有安装步骤有所不同。
Ubuntu 18.04中, Neovim已包含在发行版中,因此您可以执行以下操作

sudo apt-get install neovim

Mac OS上 ,可以通过Homebrew使用 :

brew install neovim

要调用Neovim ,您需要调用nvim ,它比vim长一个字母,并且与只有常规vim的机器不兼容。 要解决此问题,您可以在rc脚本中定义一个别名:

alias vim='nvim'

我个人选择了一种顽固的方式:删除/usr/bin/vim并用指向Neovim的符号链接替换它:

sudo rm /usr/bin/vim && sudo ln -s /usr/bin/nvim /usr/bin/vim

安装插头

在使用Vim进行其他操作之前,最好先安装插件管理器。 我选择了vim-plug ,因为它非常简约并且仍然可以完成工作。 要安装Neovim 插件 :

curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Vim-plug是唯一需要手动添加的插件,其余的将通过Plug安装。

安装Tmux

接下来要配置的是Tmux 。 Tmux是终端多路复用器,它使我们能够执行以下关键操作:

  • 将终端窗口分为水平和垂直面板
  • 将单个终端拆分为多个窗口
  • 即使我们丢失了SSH连接,也要使Tmux中运行的所有进程保持活动状态。

Tmux在远程端运行(如果我们在谈论远程计算机上的开发),它本身又分为tmux-servertmux-client 。 通过SSH连接到工作站时,首先启动tmux-client ,然后将其连接到tmux-server ,该服务器与守护程序在同一台计算机上运行。 当连接断开时, SSH仅终止tmux-client部分,因为它是SSH进程启动的唯一子级。 现在,在Ubuntu 18.04上 , 发行版中已经包含了足够新的Tmux ,所以只需执行以下操作:

sudo apt-get install tmux

在其他平台上,请确保您正在安装tmux >= 2.0 ,因为我的配置中的某些内容与旧版本不兼容。

安装Zsh

与bash相比,我更喜欢Zsh ,因为它提供了一些额外的功能:命令历史记录,在所有正在运行的shell中共享,更高级的命令自动完成功能以及可通过oh-my-zsh进行扩展的功能 。 在Ubuntu上运行:

sudo apt-get install zsh

然后将其设为用户的默认外壳程序:

chsh -s /bin/zsh

(然后重新登录)

添加oh-my-zsh :

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh )"

z

谁不喜欢模糊搜索?

sudo apt-get install git
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

然后,对所有问题都回答“是”,它将以多种方式使您的ZSH模糊。 只需尝试按Ctrl + R或Ctrl + T。

〜/ .zshrc定制

这是我想在rc文件中拥有的一些东西:

最后,我们已经安装了所有核心工具,现在可以继续进行配置。 让我们首先看一下我的Vim配置。

根据您的喜好对其进行调整,放入~/.config/nvim/init.vim ,打开Vim ,然后运行:PlugInstall安装所有插件(忽略打开Vim时的启动错误)。

要完成YCM安装:

cd ~/.local/share/nvim/plugged/YouCompleteMe
sudo apt-get install build-essential python-dev cmake
./install.py

然后,摆脱掉Vim底部的这些怪异符号:

sudo apt-get install fonts-powerline

(安装字体后,您可能需要重新启动终端)

经过所有操作后,您的Vim应该看起来像这样:

Tmux配置

我也对Tmux配置做了一些调整。
Vim一样 ,您应该从安装插件管理器开始 :

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

这是我完整的Tmux配置:

将其放在~/.tmux.conf (和~/.tmuxline )下,然后(重新)启动Tmux 。 在第一次启动时,按prefix I以安装Tmux插件(默认前缀为Ctrl + b)

这是完成上述所有步骤后的屏幕截图:

您只需复制和粘贴此帖子中的内容,就可以重新创建我的设置。 CLI工具的真正魅力在于它们的可定制性令人难以置信。 您绝对应该采用此配置,并将其用作自己的实验模板!

最后还有一些提示:

  • 没有Vim导航,Vim毫无意义,因此请习惯那些可恶的HJKL 。
  • 尝试将CapsLock映射到Esc ,尤其是在新的Mac笔记本电脑上
  • 让自己成为那些弯曲的键盘之一,您的双手将感谢您!

就是这个帖子。 如果您喜欢它,还可以使用所有这些工具查看我要构建的内容 。

链接

我的工程故事

Docker容器运行缓慢的另一个原因

轻松掌握的知识库

翻译自: https://hackernoon.com/clife-or-my-development-setup-67868b86cb57




推荐阅读
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • 在日常的项目开发中,测试环境和生产环境通常采用HTTP协议访问服务。然而,从浏览器的角度来看,这种访问方式会被标记为不安全。为了提升安全性,当前大多数生产环境已经转向了HTTPS协议。本文将详细介绍如何在Spring Boot应用中配置SSL证书,以实现HTTPS安全访问。通过这一过程,不仅可以增强数据传输的安全性,还能提高用户对系统的信任度。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 在腾讯云服务器上部署Nginx的详细指南中,首先需要确保安装必要的依赖包。如果这些依赖包已安装,可直接跳过此步骤。具体命令包括 `yum -y install gcc gcc-c++ wget net-tools pcre-devel zlib-devel`。接下来,本文将详细介绍如何下载、编译和配置Nginx,以确保其在腾讯云服务器上顺利运行。此外,还将提供一些优化建议,帮助用户提升Nginx的性能和安全性。 ... [详细]
  • 在IIS上运行的WebApi应用程序在开发环境中能够正常进行文件的读写操作。然而,在尝试通过FTP访问实时服务器上的文件列表时,遇到了无法显示的问题,尽管服务器配置与开发环境相同。这可能涉及权限设置、FTP服务配置或网络连接等方面的问题。 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 本文深入探讨了使用Puppet进行软件包分发与管理的方法。首先介绍了fpm这一跨平台的软件包制作工具,其简便的操作流程使得软件包的创建变得轻松快捷。fpm的项目地址为:https://github.com/jordansissel/fpm。通过结合Puppet和fpm,可以实现高效、可靠的软件包管理和部署。 ... [详细]
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
  • Java中处理NullPointerException:getStackTrace()方法详解与实例代码 ... [详细]
  • 本文深入解析了 FCEUX 源码,并详细介绍了两种制作 DEB 包的方法及其技术细节。首先,DEB 包通常由两部分组成:控制信息(位于 DEBIAN 目录)和安装内容(模拟目录)。通过解压现有的 DEB 包,可以查看其内部结构,进而理解其工作原理。具体操作包括将安装内容释放到指定目录中,以便进行进一步的修改和定制。此外,文章还探讨了如何修改现有的 DEB 包,以满足特定需求,提供了实用的步骤和技巧。 ... [详细]
author-avatar
若雄建伦95
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有