我将以下功能放入我的~/.zshrc文件中: function note() { vim $HOME/Dropbox/$1.md } 例如,当我使用note "20150209-132501-Recx-new note today.md"调用它时,它会创建一个新文件,但使用" 2015020209-132501-recx-new"的文件名来创建新文件.我意识到这是一个简单的问题,但是我该如何使用全名创建注释? 解决方案 外壳按照此顺序执行参数替代和单词分解. 这意味着您最终执行 vim /home/username/Dropbox/20150209-132501-Recx-new note today.md.md 即.您可以使用三个文件名调用VIM.如果您想在替换的零件上抑制单词分解,则必须在功能定义中使用引号:: function note() { vim "$HOME/Dropbox/$1.md" } 并用 称呼它 note
以下是关于 zsh 的编程技术问答
一个人如何从ZSH中的字符串末端删除任何和所有空格,而不会产生其他过程? 查看 14.8.1全球操作员 - 也可以通过$ man zshexpn来查看以下代码: ${${var##[:space:]##}%%[:space:]##} 但ZSH似乎无法识别[:space:] glob operator.根据我对文档中以下语句的理解,应该: 在下面讨论的需要模式的扩展中,模式的形式与文件名生成的形式相同;请参阅文件名的生成.请注意,这些模式以及任何替换的替代文本本身都需要参数扩展,命令替代和算术扩展. 这是ZSH中的错误还是我忽略了某些东西? 目前,我只是在使用${${var## ##}%% ##}至少在末端替换所有空间字符. 我正在使用zsh 5.8. 解决方案 引用zsh glob operator文档: 请注意,方括号是包含整个字符的那些,因此要测试需要‘[[:alnum:]]’的单个字母数字. 因此,仅使用[:space:]
如何修改以下代码,以便在ZSH中运行时会扩展$things并一次通过它们迭代? things="one two" for one_thing in $things; do echo $one_thing done 我希望输出为: one two ,但如上所述,它输出: one two (我正在寻找在bash中运行上述代码时得到的行为) 解决方案 要查看与Bourne Shell兼容的行为,您需要设置选项SH_WORD_SPLIT: setopt shwordsplit # this can be unset by saying: unsetopt shwordsplit things="one two" for one_thing in $things; do echo $one_thing done 会产生: one two 但是,建议使用数组来产生单词分裂,例如 things=(one t
我正在学习React并通过NPM安装WebPack到我的项目目录,但是即使我可以在项目中看到WebPack,ZSH也没有找到命令.我使用了npm init --yes npm install --save webpack 解决方案 编辑:不要这样做.不良练习. 简单的方式.在全球安装它. npm i -g webpack 如果您将使用WebPack,请安装WebPack-dev-server npm i -g webpack-dev-server 我建议您首先学习一些有关 npm ,然后 webpack . 其他解决方案 无需全球安装WebPack. 尝试我的方式: 首先,在您的软件包中,添加以下内容: "scripts": { "start": "webpack" }, 然后,在您的终端中,运行 $npm start 另一种快速方法: 只需运行(是的,是'npx') $npx webpack 仅此
我已经开始为VSCODE设置ZSH.它工作了一小部分,但随后更改为Git Bash(我以前的默认外壳).我尝试将外壳更改回ZSH,但没有在意见列表中显示.但是,它确实显示了WSL,它显示了一个完全不同的主题 我的主题(在Windows终端,Unpuntu,ECT中): VSCODE中的主题: 我尝试将其添加到我的settings.json: "terminal.integrated.shell.windows": "/bin/zsh", 但它说:"终端过程未能启动:通往外壳的路径" \ bin \ zsh"不存在." 如何修复此此操作(将默认外壳更改为ZSH)? 解决方案 尝试which zsh确认ZSH可执行文件的路径.您可能有路径错误. 或尝试GUI方法. 打开命令调色板 Windows - Ctrl + Shift + P mac- ⌘ + Shift + P 搜索Terminal: Select Defaul
我正在尝试在我的VSC设置上集成ZSH,但显然没有识别箭头. 我的ZSH主题是Agnoster,我已经尝试添加 "terminal.integrated.fontFamily": "Meslo LG M DZ for Powerline"而没有成功.有人经历过这样的事情,可以伸出援手吗?谢谢. 解决方案 之后的小指南解决了问题在Visual-studio-Code-terminal-in-powerline-work-work . 重要:如果您已经安装了Powerline字体(例如,系统终端内部看起来不错),跳过步骤1 . 直接从 https://github.com/powerline.com/powerline/fonts安装所需字体的修补版本.显然,在这种情况下,执行"快速安装"(例如sudo apt-get install fonts-powerline) 在这种情况下不起作用 .因此,您可以手动安装直接下载.ttf文件或运行提供的安装脚本./insta
如果您查看VS代码终端 - 它太小了. 这是我修改的用户设置以创建此结果.我搜索了如何通过VS代码更改终端字体,但是我遵循了所有指令 terminal.integrated.fontSize这根本无济于事 - 它只会延长线路. 请建议 - 预先感谢. 解决方案 我敢肯定有一些答案.但是要解决我的,我必须更改terminal.integrated.fontFamily.例如,尝试这些主题"摩纳哥".将此行添加到您的设置中. "terminal.integrated.fontFamily": "Monaco" 如果字体大小不变,并且仅增加字母间距,请尝试一些检查: 保存设置并关闭VS代码编辑器,然后重新打开一个新的. 尝试重新启动与代码. 您选择的字体家庭主题在呈现方式中起着巨大的作用. 检查此 font家庭主题您可以测试. ,就CLI和编辑器的基本视觉效果而言,这是我当前的设置: "explorer.confirmDelete": fa
我使用终端运行npm run start之类的东西,而我在vscode中使用git命令中的终端.在我的笔记本电脑上,这很好,但是在我的另一个设备上设置了ZSH之后,我从未注意到: 在我的终端上:~/Desktop/... | master *1 在VSCODE的终端上:~/Desktop/... | master *2 master之后的数字是什么意思?这使我在发布后毫无意义地调试1小时,如果我在终端上npm run start,则VSCODE上的任何更改都不会加热并应用更改.另一方面,如果我在vscode中运行npm run start,它正常工作. 似乎每个外壳都在处理当前分支的不同版本.知道星号的含义吗?谢谢! 解决方案 根据您的提示主题(我使用PowerLevel10k),这可能表明您在藏匿处使用了多少个插槽.您可以使用: 进行检查 git stash list ,如有必要,用 将其删除 git stash clear 其他解决方案
如果我使用的是带有ZSH的常规终端,我可以启动任何conda环境,而python或ipython命令打开"右"版本(在特定的conda env上,它是python 3.7.7.). 但是,如果我在vscode下的终端上,我总是会得到一个不同的版本,好像它没有假设Conda环境,尽管提示显示了正确的Conda Env. 关于这里可能有什么问题的想法? 解决方案 离开这里的答案,因为我刚刚发现它是一个已知的错误. https://github.com/microsoft/vscode-python/issues/5764 这是对非窗口机的发生,如果所选的解释器是conda环境,并且未设置" terminal.integrated.inheritenv".解决方案是将" terminal.integrated.inheritenv"设置为false. 其他解决方案 in .vscode/settings.json,您可以将需要的python版本放置: {
问题 问题如标题中所述. 在GIST中,我正在尝试使我的bash脚本和vim在VS代码的集成终端运行时的行为. 我发现的东西 我设法找到了其他几个堆栈溢出问题,但它们与操作系统的检测有关: - 如何检查如何检查在Cygwin,Mac还是Linux上运行? - 如何从bash脚本中检测OS?/a> 解决方案 通过检查VSCODE终端中的Shell变量,您可以看到它设置了TERM_PROGRAM=vscode.在我的.bash_profile中,我有以下功能,并且效果很好: if [ "$TERM_PROGRAM" == "vscode" ]; then # some stuff else # other stuff fi 其他解决方案 您可以检查父程进程,直到它匹配或找到pid == 1 #! /bin/bash pid=$$ until (( pid == 1 )) do [[ $(ps -o command
复制的步骤: 在Linux环境中,在桌面上创建一个名为" Fab" 的文件夹 仅供参考,我正在使用zsh cd to ~/Desktop/fab 通过发行fab init在您的./fab dir中运行此fabfile.py: #!/usr/bin/env python #set up ssh to remote server import sys, os, fileinput from fabric.api import * def init(): local('mkdir ./virtualenv') local('cd ./virtualenv && virtualenv --no-site-packages venv') local('chown -R user:user ./virtualenv/') local('chmod 770 -R ./virtualenv/') venv = 'source ./virt
我希望在我使用或创建的每个Virtualenv实例中更改我的ZSH提示样式.我的实际提示是这样的: declare PS1="%{$fg[magenta]%}%n%{$reset_color%} at %{$fg[yellow]%}%m%{$reset_color%} in %{$fg_bold[green]%}%3~%{$reset_color%}" 当我激活Virtualenv时,它只会在提示之前添加一些信息: (the name of my venv)my_prompt 您知道一种更改颜色或样式的方法吗? 解决方案 如果使用 hooks 这样做. 其他解决方案 您可以在〜/.zshrc中使用virtualenvwrapper插件,不要将virtualenv插件与virtualenvwrapper一起使用.
我在~/Documents中有很多项目.我几乎在Python工作,所以这些基本上都是Python项目.每个,例如~/Documents/foo有自己的Virtualenv,~/Documents/foo/venv(它们总是称为VENV).每当我在项目之间切换约10次时,我都会做 deactivate cd .. cd foo source venv/bin/activate 我已经到达了我厌倦了输入deactivate和source venv/bin/activate的地步. 我正在寻找一种cd ../foo的方法,并为我处理Virtualenv操作. 我很熟悉 virtualenvwrapper 有点沉重我的想法.据我所知,它似乎可以将所有虚拟人类移动到其他地方,并且增加了比消除的复杂性. (欢迎反对意见!) 我对外壳脚本不太熟悉.如果您可以推荐一个低维护脚本来添加到我的~/.zshrc中,那就足够了,但是从一些快速的谷歌搜索来看,我还没有找到这样的脚本.
我试图在Ipython中使用%ED Magic将VIM用作编辑器. 安装了vim ipython和ipython qtconsole都起作用 ZSH是最新的,我的OH-MY-ZSH安装 已更新 我导出了我的首选 $ echo "export EDITOR=/usr/bin/vim" >> ~/.zshrc $ echo "export VISUAL=/usr/bin/vim" >> ~/.zshrc 但是,当我启动ipython然后调用%ed魔术时,它会失败 In [1]: %ed IPython will make a temporary file named: /tmp/ipython_edit_pu4Yql.py Editing.../bin/sh: 1: mvim: not found WARNING: Could not open editor 我该如何工作? 解决方案 尝试使用ipython的配置文件作为指定编辑器的一种手段.为
我知道如何fzf.vim,但是我想从终端打开. Grepping History或Viminfo可能会实现,但我想知道是否有任何明智的方法. 解决方案 这是您可以将最新文件列表从vim保存到文件的方式: vim -c "call append(0, v:oldfiles)" -c "write vim-oldfiles.tmp" -c exit put 现在您可以将文件内容传递给fzf. 其他解决方案 不是精确的解决方案.但是您可以像IDE一样在VIM编辑的下部打开终端缓冲区,并使用端子FZF 但是,不确定这是否会让您在新的vim选项卡中打开一个文件 其他解决方案 如果您在路径中具有~的文件上执行VIM(VIM打开一个新的空白文件而不是所需的文件),因为FZF和VIM不展开Tilde(~) ),这是我这样做的方式: export FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS" --bind 'ctrl-e:exe
我是VIM用户,并习惯了gf命令,该命令在光标下打开文件. 现在我想问,是否有类似的东西. 我可以通过TMUX-PANE导航,并且经常发生光标下方有一个文件路径.现在,我喜欢使用VIM下的光标下的文件. a:在当前窗口中 b:在另一个窗口中,其中包括并打开了vim 可能在调用特殊键组合时可以在该导航模式中运行SH-Script?那将有可能像我习惯于用vimscript在vim中写下自己的脚本. 我已经在mux.tmux.conf 中使用了一些vi-copy模式 # VIM # =================================================================== # Vimlike copy mode. unbind [ bind Escape copy-mode unbind p bind p paste-buffer bind -t vi-copy 'v' begin-selection bind
我的终端VIM配置没有加载〜/.zshrc. ZSH是环境登录外壳.这种情况的适当配置是什么? 这是我已经采取的一些措施,此后已删除: set shell=zsh (使用ZSH作为外壳,但没有采购RC) set shellcmdflag=-ci (所有输出悬挂) cat ~/.zshenv $ source ~/.zshrc (打开VIM时许多错误) 解决方案 手册: Commands are first read from /etc/zshenv; this cannot be overridden. [...] Commands are then read from $ZDOTDIR/.zshenv. If the shell is a login shell, commands are read from /etc/zprofile and then $ZDOTDIR/.zprofile. Then, if the shell
关于vim内部运行壳程序程序的堆叠问题.是否可以进行反向,即 $ vim :BundleInstall 允许我运行 bundleinstall 作为外壳脚本的一部分,而不是必须打开手动运行它? 解决方案 注意,现在语法已更改,该行应该读取(按 @sheharyar ): vim +PluginInstall +qall 以前,正确的线是: vim +BundleInstall +qall 除了我以外的任何人都应该看!注意:这在 github readme for vundle中. 其他解决方案 按 vim man page (man vim): +{command} -c {command} {command} will be executed after the first file has been read. {command} is interpreted as an Ex command. If