refactor: del keymaps, change keymapping to vi

This commit is contained in:
hophacker 2021-12-25 12:30:10 +08:00
parent e7835666fc
commit 7e233ae717
4 changed files with 113 additions and 126 deletions

233
Rakefile
View File

@ -1,55 +1,45 @@
# frozen_string_literal: true # frozen_string_literal: true
require "rake" require 'rake'
require "fileutils" require 'fileutils'
require "English" require 'English'
def macos? def macos?
RUBY_PLATFORM.downcase.include?("darwin") RUBY_PLATFORM.downcase.include?('darwin')
end end
def linux? def linux?
RUBY_PLATFORM.downcase.include?("linux") RUBY_PLATFORM.downcase.include?('linux')
end end
# this has all the runcoms from this directory. # this has all the runcoms from this directory.
task :link_files do task :link_files do
if want_to_install?("git configs (color, aliases)") install_files(Dir.glob('git/*')) if want_to_install?('git configs (color, aliases)')
install_files(Dir.glob("git/*")) install_files(Dir.glob('irb/*')) if want_to_install?('irb/pry configs (more colorful)')
end install_files(Dir.glob('ruby/*')) if want_to_install?('rubygems config (faster/no docs)')
if want_to_install?("irb/pry configs (more colorful)") install_files(Dir.glob('ctags/*')) if want_to_install?('ctags config (better js/ruby support)')
install_files(Dir.glob("irb/*")) install_files(Dir.glob('tmux/*')) if want_to_install?('tmux config')
end install_files(Dir.glob('vimify/*')) if want_to_install?('vimification of command line tools')
if want_to_install?("rubygems config (faster/no docs)")
install_files(Dir.glob("ruby/*"))
end
if want_to_install?("ctags config (better js/ruby support)")
install_files(Dir.glob("ctags/*"))
end
install_files(Dir.glob("tmux/*")) if want_to_install?("tmux config")
if want_to_install?("vimification of command line tools")
install_files(Dir.glob("vimify/*"))
end
run %( run %(
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
) )
end end
desc "Hook our dotfiles into system-standard positions." desc 'Hook our dotfiles into system-standard positions.'
task install: %i[submodule_init submodules] do task install: %i[submodule_init submodules] do
puts puts
puts "======================================================" puts '======================================================'
puts "Welcome to YADR Installation." puts 'Welcome to YADR Installation.'
puts "======================================================" puts '======================================================'
puts puts
install_homebrew if macos? install_homebrew if macos?
install_rvm_binstubs install_rvm_binstubs
Rake::Task["link_files"].execute Rake::Task['link_files'].execute
Rake::Task["install_tools"].execute Rake::Task['install_tools'].execute
Rake::Task["install_prezto"].execute Rake::Task['install_prezto'].execute
Rake::Task["install_spacevim"].execute Rake::Task['install_spacevim'].execute
install_fonts install_fonts
@ -57,20 +47,20 @@ task install: %i[submodule_init submodules] do
run_bundle_config run_bundle_config
success_msg("installed") success_msg('installed')
end end
task :install_prezto do task :install_prezto do
install_prezto if want_to_install?("zsh enhancements & prezto") install_prezto if want_to_install?('zsh enhancements & prezto')
end end
desc "install spacevim and related config files" desc 'install spacevim and related config files'
task :install_spacevim do task :install_spacevim do
run 'curl -sLf https://spacevim.org/install.sh | sed "s;github.com/SpaceVim;yuancode.ruilisi.com/ruilisi;" | bash' run 'curl -sLf https://spacevim.org/install.sh | sed "s;github.com/SpaceVim;yuancode.ruilisi.com/ruilisi;" | bash'
install_files(Dir.glob("SpaceVim*")) install_files(Dir.glob('SpaceVim*'))
end end
desc "Update spacevim" desc 'Update spacevim'
task :update_spacevim do task :update_spacevim do
run %( run %(
cd ~/.SpaceVim cd ~/.SpaceVim
@ -79,7 +69,7 @@ task :update_spacevim do
) )
end end
desc "Install tools which are necessary for developers" desc 'Install tools which are necessary for developers'
task :install_tools do task :install_tools do
if macos? if macos?
run %( run %(
@ -92,7 +82,7 @@ task :install_tools do
end end
end end
desc "Prepare necessary components for spacevim/typescript" desc 'Prepare necessary components for spacevim/typescript'
task :prepare_spacevim_typescript do task :prepare_spacevim_typescript do
run %( run %(
pip install neovim pip install neovim
@ -101,14 +91,14 @@ task :prepare_spacevim_typescript do
end end
task :update do task :update do
Rake::Task["vundle_migration"].execute if needs_migration_to_vundle? Rake::Task['vundle_migration'].execute if needs_migration_to_vundle?
Rake::Task["install"].execute Rake::Task['install'].execute
# TODO: for now, we do the same as install. But it would be nice # TODO: for now, we do the same as install. But it would be nice
# not to clobber zsh files # not to clobber zsh files
end end
task :sync do task :sync do
vundle_path = File.join("vim", "bundle", "vundle") vundle_path = File.join('vim', 'bundle', 'vundle')
unless File.exist?(vundle_path) unless File.exist?(vundle_path)
run %( run %(
cd $HOME/.yadr cd $HOME/.yadr
@ -118,15 +108,15 @@ task :sync do
end end
task :submodule_init do task :submodule_init do
run %( git submodule update --init --recursive ) unless ENV["SKIP_SUBMODULES"] run %( git submodule update --init --recursive ) unless ENV['SKIP_SUBMODULES']
end end
desc "Init and update submodules." desc 'Init and update submodules.'
task :submodules do task :submodules do
unless ENV["SKIP_SUBMODULES"] unless ENV['SKIP_SUBMODULES']
puts "======================================================" puts '======================================================'
puts "Downloading YADR submodules...please wait" puts 'Downloading YADR submodules...please wait'
puts "======================================================" puts '======================================================'
run %( run %(
cd $HOME/.yadr cd $HOME/.yadr
@ -137,42 +127,42 @@ task :submodules do
end end
end end
task default: "install" task default: 'install'
private private
def run(cmd) def run(cmd)
puts "[Running] #{cmd}" puts "[Running] #{cmd}"
`#{cmd}` unless ENV["DEBUG"] `#{cmd}` unless ENV['DEBUG']
end end
def number_of_cores def number_of_cores
cores = if macos? cores = if macos?
run %( sysctl -n hw.ncpu ) run %( sysctl -n hw.ncpu )
else else
run %( nproc ) run %( nproc )
end end
puts puts
cores.to_i cores.to_i
end end
def run_bundle_config def run_bundle_config
return unless system("which bundle") return unless system('which bundle')
bundler_jobs = number_of_cores - 1 bundler_jobs = number_of_cores - 1
puts "======================================================" puts '======================================================'
puts "Configuring Bundlers for parallel gem installation" puts 'Configuring Bundlers for parallel gem installation'
puts "======================================================" puts '======================================================'
run %( bundle config --global jobs #{bundler_jobs} ) run %( bundle config --global jobs #{bundler_jobs} )
puts puts
end end
def install_rvm_binstubs def install_rvm_binstubs
puts "======================================================" puts '======================================================'
puts "Installing RVM Bundler support. Never have to type" puts 'Installing RVM Bundler support. Never have to type'
puts "bundle exec again! Please use bundle --binstubs and RVM" puts 'bundle exec again! Please use bundle --binstubs and RVM'
puts "will automatically use those bins after cd'ing into dir." puts "will automatically use those bins after cd'ing into dir."
puts "======================================================" puts '======================================================'
run %( chmod +x $rvm_path/hooks/after_cd_bundler ) run %( chmod +x $rvm_path/hooks/after_cd_bundler )
puts puts
end end
@ -180,24 +170,24 @@ end
def install_homebrew def install_homebrew
run %(which brew) run %(which brew)
unless $CHILD_STATUS.success? unless $CHILD_STATUS.success?
puts "======================================================" puts '======================================================'
puts "Installing Homebrew, the OSX package manager...If it's" puts "Installing Homebrew, the OSX package manager...If it's"
puts "already installed, this will do nothing." puts 'already installed, this will do nothing.'
puts "======================================================" puts '======================================================'
run %{ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"} run %{ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"}
end end
puts puts
puts puts
puts "======================================================" puts '======================================================'
puts "Updating Homebrew." puts 'Updating Homebrew.'
puts "======================================================" puts '======================================================'
run %(brew update) run %(brew update)
puts puts
puts puts
puts "======================================================" puts '======================================================'
puts "Installing Homebrew packages...There may be some warnings." puts 'Installing Homebrew packages...There may be some warnings.'
puts "======================================================" puts '======================================================'
run %(brew install zsh ctags git hub tmux reattach-to-user-namespace ripgrep ghi) run %(brew install zsh ctags git hub tmux reattach-to-user-namespace ripgrep ghi)
run %(brew install macvim --with-override-system-vim --with-lua --with-luajit) run %(brew install macvim --with-override-system-vim --with-lua --with-luajit)
puts puts
@ -205,50 +195,48 @@ def install_homebrew
end end
def install_fonts def install_fonts
puts "======================================================" puts '======================================================'
puts "Installing patched fonts for Powerline/Lightline." puts 'Installing patched fonts for Powerline/Lightline.'
puts "======================================================" puts '======================================================'
run %( cp -f $HOME/.yadr/fonts/* $HOME/Library/Fonts ) if macos? run %( cp -f $HOME/.yadr/fonts/* $HOME/Library/Fonts ) if macos?
if linux? run %( mkdir -p ~/.fonts && cp ~/.yadr/fonts/* ~/.fonts && fc-cache -vf ~/.fonts ) if linux?
run %( mkdir -p ~/.fonts && cp ~/.yadr/fonts/* ~/.fonts && fc-cache -vf ~/.fonts )
end
puts puts
end end
def install_term_theme def install_term_theme
puts "======================================================" puts '======================================================'
puts "Installing iTerm2 solarized theme." puts 'Installing iTerm2 solarized theme.'
puts "======================================================" puts '======================================================'
run %( /usr/libexec/PlistBuddy -c "Add :'Custom Color Presets':'Solarized Light' dict" ~/Library/Preferences/com.googlecode.iterm2.plist ) run %( /usr/libexec/PlistBuddy -c "Add :'Custom Color Presets':'Solarized Light' dict" ~/Library/Preferences/com.googlecode.iterm2.plist )
run %( /usr/libexec/PlistBuddy -c "Merge 'iTerm2/Solarized Light.itermcolors' :'Custom Color Presets':'Solarized Light'" ~/Library/Preferences/com.googlecode.iterm2.plist ) run %( /usr/libexec/PlistBuddy -c "Merge 'iTerm2/Solarized Light.itermcolors' :'Custom Color Presets':'Solarized Light'" ~/Library/Preferences/com.googlecode.iterm2.plist )
run %( /usr/libexec/PlistBuddy -c "Add :'Custom Color Presets':'Solarized Dark' dict" ~/Library/Preferences/com.googlecode.iterm2.plist ) run %( /usr/libexec/PlistBuddy -c "Add :'Custom Color Presets':'Solarized Dark' dict" ~/Library/Preferences/com.googlecode.iterm2.plist )
run %( /usr/libexec/PlistBuddy -c "Merge 'iTerm2/Solarized Dark.itermcolors' :'Custom Color Presets':'Solarized Dark'" ~/Library/Preferences/com.googlecode.iterm2.plist ) run %( /usr/libexec/PlistBuddy -c "Merge 'iTerm2/Solarized Dark.itermcolors' :'Custom Color Presets':'Solarized Dark'" ~/Library/Preferences/com.googlecode.iterm2.plist )
# If iTerm2 is not installed or has never run, we can't autoinstall the profile since the plist is not there # If iTerm2 is not installed or has never run, we can't autoinstall the profile since the plist is not there
unless File.exist?(File.join(ENV["HOME"], "/Library/Preferences/com.googlecode.iterm2.plist")) unless File.exist?(File.join(ENV['HOME'], '/Library/Preferences/com.googlecode.iterm2.plist'))
puts "======================================================" puts '======================================================'
puts "To make sure your profile is using the solarized theme" puts 'To make sure your profile is using the solarized theme'
puts "Please check your settings under:" puts 'Please check your settings under:'
puts "Preferences> Profiles> [your profile]> Colors> Load Preset.." puts 'Preferences> Profiles> [your profile]> Colors> Load Preset..'
puts "======================================================" puts '======================================================'
return return
end end
# Ask the user which theme he wants to install # Ask the user which theme he wants to install
message = "Which theme would you like to apply to your iTerm2 profile?" message = 'Which theme would you like to apply to your iTerm2 profile?'
color_scheme = ask message, iTerm_available_themes color_scheme = ask message, iTerm_available_themes
return if color_scheme == "None" return if color_scheme == 'None'
color_scheme_file = File.join("iTerm2", "#{color_scheme}.itermcolors") color_scheme_file = File.join('iTerm2', "#{color_scheme}.itermcolors")
# Ask the user on which profile he wants to install the theme # Ask the user on which profile he wants to install the theme
profiles = iTerm_profile_list profiles = iTerm_profile_list
message = "I've found #{profiles.size} #{profiles.size > 1 ? "profiles" : "profile"} on your iTerm2 configuration, which one would you like to apply the Solarized theme to?" message = "I've found #{profiles.size} #{profiles.size > 1 ? 'profiles' : 'profile'} on your iTerm2 configuration, which one would you like to apply the Solarized theme to?"
profiles << "All" profiles << 'All'
selected = ask message, profiles selected = ask message, profiles
if selected == "All" if selected == 'All'
(profiles.size - 1).times { |idx| apply_theme_to_iterm_profile_idx idx, color_scheme_file } (profiles.size - 1).times { |idx| apply_theme_to_iterm_profile_idx idx, color_scheme_file }
else else
apply_theme_to_iterm_profile_idx profiles.index(selected), color_scheme_file apply_theme_to_iterm_profile_idx profiles.index(selected), color_scheme_file
@ -256,7 +244,7 @@ def install_term_theme
end end
def iTerm_available_themes def iTerm_available_themes
Dir["iTerm2/*.itermcolors"].map { |value| File.basename(value, ".itermcolors") } << "None" Dir['iTerm2/*.itermcolors'].map { |value| File.basename(value, '.itermcolors') } << 'None'
end end
def iTerm_profile_list def iTerm_profile_list
@ -289,30 +277,30 @@ end
def install_prezto def install_prezto
puts puts
puts "Installing Prezto (ZSH Enhancements)..." puts 'Installing Prezto (ZSH Enhancements)...'
run %( ln -nfs "$HOME/.yadr/zsh/prezto" "${ZDOTDIR:-$HOME}/.zprezto" ) run %( ln -nfs "$HOME/.yadr/zsh/prezto" "${ZDOTDIR:-$HOME}/.zprezto" )
# The prezto runcoms are only going to be installed if zprezto has never been installed # The prezto runcoms are only going to be installed if zprezto has never been installed
install_files(Dir.glob("zsh/prezto/runcoms/z*"), :symlink) install_files(Dir.glob('zsh/prezto/runcoms/z*'), :symlink)
puts puts
puts "Overriding prezto ~/.zpreztorc with YADR's zpreztorc to enable additional modules..." puts "Overriding prezto ~/.zpreztorc with YADR's zpreztorc to enable additional modules..."
install_files(Dir.glob("zsh/prezto-override/z*"), :symlink) install_files(Dir.glob('zsh/prezto-override/z*'), :symlink)
puts puts
puts "Creating directories for your customizations" puts 'Creating directories for your customizations'
run %( mkdir -p $HOME/.zsh.before ) run %( mkdir -p $HOME/.zsh.before )
run %( mkdir -p $HOME/.zsh.after ) run %( mkdir -p $HOME/.zsh.after )
run %( mkdir -p $HOME/.zsh.prompts ) run %( mkdir -p $HOME/.zsh.prompts )
if (ENV["SHELL"]).to_s.include? "zsh" if (ENV['SHELL']).to_s.include? 'zsh'
puts "Zsh is already configured as your shell of choice. Restart your session to load the new settings" puts 'Zsh is already configured as your shell of choice. Restart your session to load the new settings'
else else
puts "Setting zsh as your default shell" puts 'Setting zsh as your default shell'
if File.exist?("/usr/local/bin/zsh") if File.exist?('/usr/local/bin/zsh')
if File.readlines("/private/etc/shells").grep("/usr/local/bin/zsh").empty? if File.readlines('/private/etc/shells').grep('/usr/local/bin/zsh').empty?
puts "Adding zsh to standard shell list" puts 'Adding zsh to standard shell list'
run %( echo "/usr/local/bin/zsh" | sudo tee -a /private/etc/shells ) run %( echo "/usr/local/bin/zsh" | sudo tee -a /private/etc/shells )
end end
run %( chsh -s /usr/local/bin/zsh ) run %( chsh -s /usr/local/bin/zsh )
@ -323,9 +311,9 @@ def install_prezto
end end
def want_to_install?(section) def want_to_install?(section)
if ENV["ASK"] == "true" if ENV['ASK'] == 'true'
puts "Would you like to install configuration files for: #{section}? [y]es, [n]o" puts "Would you like to install configuration files for: #{section}? [y]es, [n]o"
STDIN.gets.chomp == "y" STDIN.gets.chomp == 'y'
else else
true true
end end
@ -333,9 +321,9 @@ end
def install_files(files, method = :symlink) def install_files(files, method = :symlink)
files.each do |f| files.each do |f|
file = f.split("/").last file = f.split('/').last
source = "#{ENV["PWD"]}/#{f}" source = "#{ENV['PWD']}/#{f}"
target = "#{ENV["HOME"]}/.#{file}" target = "#{ENV['HOME']}/.#{file}"
puts "======================#{file}==============================" puts "======================#{file}=============================="
puts "Source: #{source}" puts "Source: #{source}"
@ -355,42 +343,43 @@ def install_files(files, method = :symlink)
# Temporary solution until we find a way to allow customization # Temporary solution until we find a way to allow customization
# This modifies zshrc to load all of yadr's zsh extensions. # This modifies zshrc to load all of yadr's zsh extensions.
# Eventually yadr's zsh extensions should be ported to prezto modules. # Eventually yadr's zsh extensions should be ported to prezto modules.
source_config_code = "for config_file ($HOME/.yadr/zsh/*.zsh) source $config_file" source_config_code = 'for config_file ($HOME/.yadr/zsh/*.zsh) source $config_file'
if file == "zshrc" if file == 'zshrc'
File.open(target, "a+") do |zshrc| File.open(target, 'a+') do |zshrc|
if zshrc.readlines.grep(/#{Regexp.escape(source_config_code)}/).empty? zshrc.puts(source_config_code) if zshrc.readlines.grep(/#{Regexp.escape(source_config_code)}/).empty?
zshrc.puts(source_config_code)
end
end end
end end
puts "==========================================================" puts '=========================================================='
puts puts
end end
end end
def needs_migration_to_vundle? def needs_migration_to_vundle?
File.exist? File.join("vim", "bundle", "tpope-vim-pathogen") File.exist? File.join('vim', 'bundle', 'tpope-vim-pathogen')
end end
def apply_theme_to_iterm_profile_idx(index, color_scheme_path) def apply_theme_to_iterm_profile_idx(index, color_scheme_path)
values = [] values = []
16.times { |i| values << "Ansi #{i} Color" } 16.times { |i| values << "Ansi #{i} Color" }
values << ["Background Color", "Bold Color", "Cursor Color", "Cursor Text Color", "Foreground Color", "Selected Text Color", "Selection Color"] values << ['Background Color', 'Bold Color', 'Cursor Color', 'Cursor Text Color', 'Foreground Color',
values.flatten.each { |entry| run %( /usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':#{index}:'#{entry}'" ~/Library/Preferences/com.googlecode.iterm2.plist ) } 'Selected Text Color', 'Selection Color']
values.flatten.each do |entry|
run %( /usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':#{index}:'#{entry}'" ~/Library/Preferences/com.googlecode.iterm2.plist )
end
run %( /usr/libexec/PlistBuddy -c "Merge '#{color_scheme_path}' :'New Bookmarks':#{index}" ~/Library/Preferences/com.googlecode.iterm2.plist ) run %( /usr/libexec/PlistBuddy -c "Merge '#{color_scheme_path}' :'New Bookmarks':#{index}" ~/Library/Preferences/com.googlecode.iterm2.plist )
run %( defaults read com.googlecode.iterm2 ) run %( defaults read com.googlecode.iterm2 )
end end
def success_msg(action) def success_msg(action)
puts "" puts ''
puts " _ _ _ " puts ' _ _ _ '
puts " | | | | | | " puts ' | | | | | | '
puts " | |___| |_____ __| | ____ " puts ' | |___| |_____ __| | ____ '
puts " |_____ (____ |/ _ |/ ___) " puts ' |_____ (____ |/ _ |/ ___) '
puts " _____| / ___ ( (_| | | " puts ' _____| / ___ ( (_| | | '
puts " (_______\_____|\____|_| " puts " (_______\_____|\____|_| "
puts "" puts ''
puts "YADR has been #{action}. Please restart your terminal and vim." puts "YADR has been #{action}. Please restart your terminal and vim."
end end

View File

@ -271,8 +271,6 @@ map <leader>tn :tabnew<cr>
map <leader>to :tabonly<cr> map <leader>to :tabonly<cr>
map <leader>tc :tabclose<cr> map <leader>tc :tabclose<cr>
map <leader>tm :tabmove map <leader>tm :tabmove
map <leader>tj :tabnext
map <leader>tk :tabprevious
" Let 'tl' toggle between this and the last accessed tab " Let 'tl' toggle between this and the last accessed tab
let g:lasttab = 1 let g:lasttab = 1

@ -1 +1 @@
Subproject commit 704fc46c3f83ca1055becce65fb513a533f48982 Subproject commit ecaed1cfa7591d2304d7eb5d69b42b54961a7145

View File

@ -47,7 +47,7 @@ zstyle ':prezto:load' pmodule \
# #
# Set the key mapping style to 'emacs' or 'vi'. # Set the key mapping style to 'emacs' or 'vi'.
zstyle ':prezto:module:editor' key-bindings 'emacs' zstyle ':prezto:module:editor' key-bindings 'vi'
# Auto convert .... to ../.. # Auto convert .... to ../..
# zstyle ':prezto:module:editor' dot-expansion 'yes' # zstyle ':prezto:module:editor' dot-expansion 'yes'